在标准SQL中,有一种说法:
select mubmle as x from mumblemmble
并获得不止一行结果,像这样
x _ 1 2 3
没有创建临时表?如果我知道某些表具有足够的行,则可以在SQL Server中使用row_count()来做到这一点,例如:
select row_number() over (order by x.SomeColumn) from (select top 24 SomeColumn from TableThatHasAtLeast24Rows) x
但是,想知道是否有一种标准的方法(比较简单)。
中没有标准方法,也完全没有方法MySQL。
MySQL
在Oracle:
Oracle
SELECT * FROM dual CONNECT BY level < n
在MS SQL:
MS SQL
WITH hier(row) AS ( SELECT 1 UNION ALL SELECT row + 1 FROM hier WHERE row < n ) SELECT * FROM hier OPTION (MAXRECURSION 0)
在PostgreSQL:
PostgreSQL
SELECT * FROM generate_series (1, n)
请注意MS SQL,与不同Oracle,不能将递归堆栈交换到临时表空间中,因此在生成大型数据集时可能会遇到麻烦。