admin

SQL-如何在没有源表的情况下创建多行结果

sql

在标准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

但是,想知道是否有一种标准的方法(比较简单)。


阅读 186

收藏
2021-07-01

共1个答案

admin

中没有标准方法,也完全没有方法MySQL

Oracle

SELECT  *
FROM    dual
CONNECT BY
        level < n

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

SELECT  *
FROM    generate_series (1, n)

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

2021-07-01