微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

中没有标准方法,也完全没有方法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,不能将递归堆栈交换到临时表空间中,因此在生成大型数据集时可能会遇到麻烦。

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。