【问题标题】:SQL: Union of two tables multiple CTEsSQL:两个表多个 CTE 的并集
【发布时间】:2017-02-13 14:29:41
【问题描述】:

我的目标是在 SQL 中合并两个表,其中每个表都很复杂,并且必须使用with table as alias 语法定义自己的公共表表达式。

所以我们有了第一个表,语法如下:

with table1 as (
select/from/where statement),

table2 as (
select/from where statement),

select table1 join table2 on [...]

还有第二个表,语法类似:

with table3 as (
select/from/where statement),

table4 as (
select/from where statement),

select table3 join table4 on [...]

我的问题是:简单地将union 放在这两个表之间并不能解决问题。编译器将上面两个表之间的union 视为不正确的表达式。

(我的替代方法是将整个第一个表定义为 table5 并将整个第二个表定义为 table6 以在之后将它们合并失败,因为您似乎无法将多个“with as”语句堆叠在一起。)

【问题讨论】:

  • 您使用的是哪个 DBMS?后格雷斯?甲骨文?
  • Tab Alleman 的解决方案解决了这个问题。
  • 那么您应该接受该答案以将此问题标记为已解决

标签: sql union common-table-expression


【解决方案1】:

您必须将所有 CTE 放在第一个 SELECT 之前,然后您可以将它们联合起来,就像它们是表格一样:

WITH Table1 AS (..)
, Table2 AS (..)
, Table3 AS (..)
, Table4 AS (..)
SELECT Table1 JOIN Table2..
UNION 
SELECT Table3 JOIN Table4..

【讨论】:

    猜你喜欢
    • 2012-08-18
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多