SQL - 如何创建没有源表的多行结果

1 sql

在标准SQL中,有没有办法说:

select mubmle as x from mumblemmble
Run Code Online (Sandbox Code Playgroud)

并获得多个结果,如下所示

 x
 _ 
 1
 2
 3
Run Code Online (Sandbox Code Playgroud)

没有创建临时表?我可以使用row_count()在SQL Server中执行此操作,如果我知道某些表有足够的行,例如:

  select row_number() over (order by x.SomeColumn) from 
(select top 24 SomeColumn from TableThatHasAtLeast24Rows) x
Run Code Online (Sandbox Code Playgroud)

但是想知道是否有一种标准(不那么愚蠢)的方式.

Qua*_*noi 5

没有标准的方法,根本没有办法MySQL.

Oracle:

SELECT  *
FROM    dual
CONNECT BY
        level < n
Run Code Online (Sandbox Code Playgroud)

MS SQL:

WITH hier(row) AS
        (
        SELECT  1
        UNION ALL
        SELECT  row + 1
        FROM    hier
        WHERE   row < n
        )
SELECT  *
FROM    hier
OPTION (MAXRECURSION 0)
Run Code Online (Sandbox Code Playgroud)

PostgreSQL:

SELECT  *
FROM    generate_series (1, n)
Run Code Online (Sandbox Code Playgroud)

请注意MS SQL,与之不同的是Oracle,无法将递归堆栈交换为临时表空间,因此在生成大型数据集时可能会遇到麻烦.

有关详细信息,请参阅此答案