【发布时间】:2019-10-23 04:12:08
【问题描述】:
我不是在问它们之间的区别,我的问题是我们什么时候需要使用“Union All”?
【问题讨论】:
-
谢谢,您的所有回答都说只有两个要点 1.) 重复行和 2)。表现。这意味着我们可以使用其中任何一个,所以我不明白为什么我们不能在这个查询中使用联合。 with tempData as ( select 32 as col1, char(32) as col2 union all select col1+1, char(col1+1) from tempData where col1
-
@Jeevan Bhatt - 当您在查询中使用“UNION”而不是“UNION ALL”时会发生什么?您使用的是什么数据库?
-
@Jeevan Bhatt - 看了你的查询,我相信有一些语法错误阻止它执行。 CTE 中的第一个子查询缺少 FROM 子句,第二个子查询引用 CTE 内的 CTE,这是不允许的。您的查询试图完成什么?
-
@Bob- 我使用的是 SQL Server 2008,如果我使用“union”而不是“union all”,则会出现错误:递归公用表表达式“tempData”不包含顶级UNION ALL 运算符。
-
@Jeevan Bhatt - 显然 SQL Server 2008 允许递归 CTE,但我只有 Oracle 进行测试,似乎 Oracle 不允许递归 CTE。因此,我在这里帮不上什么忙。但是,错误消息似乎表明在 SQL Server 2008 中,递归 CTE 中的第一个 UNION 运算符必须是 UNION ALL。祝你好运。
标签: sql