如何解决SQL-如何在没有源表的情况下创建多行结果
在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 举报,一经查实,本站将立刻删除。