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)
但是想知道是否有一种标准(不那么愚蠢)的方式.
没有标准的方法,根本没有办法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,无法将递归堆栈交换为临时表空间,因此在生成大型数据集时可能会遇到麻烦.
有关详细信息,请参阅此答案