合并 sql 中的两个查询

merge tow querys in sql

我在 sql 查询中遇到问题。

我有2个select:

第一个显示:

 columnA|columnB
   A    |2
   B    |3
   D    |5

另一个显示:

columnA|columnC
     A   |1
     B   |5
     C   |7

我想合并这个拖车查询,

这是我的查询:

with 
cte1 as (
select  A,B  from table1 group by A
),
cte2 as (
   select  A,C from table2  group by A
)
select c1.A, c1.B, c2.C
from cte1 c1 left join cte2 c2 
on c2.A = c1.A
order by c1.A asc

问题是当我使用“Left join”时,结果是:

ColumnA|ColumnB|ColumnC
A      |2      |1
B      |3      |5
D      |5      |null

它没有显示第二个 table、

的值 C

当我使用“right join”时,结果是:

ColumnA|ColumnB|ColumnC
A      |2      |1
B      |3      |5
C      |null   |7

它没有显示第一个 table、

的值 D

结果应该是这样的:

 ColumnA|ColumnB|ColumnC
    A      |2      |1
    B      |3      |5
    C      |null   |7
    D      |5      |null

请提供任何解决方案

您描述的是 full join:

with 
    cte1 as (...),
    cte2 as (...)
select coalesce(c1.a, c2.a) a, c1.b, c2.c
from cte1 c1
full join cte2 c2 on c2.a = c1.a

请注意,这里实际上不需要 CTE,您可以改用子查询:

select coalesce(c1.a, c2.a) a, c1.b, c2.c
from (...) c1
full join (...) c2 on c2.a = c1.a

使用full outer join

select coalesce(table1.ColumnA,table2.ColumnA) as ColumnA,
       ColumnB,ColumnC  
from table1 full outer join table2 on table1.ColumnA=table2.ColumnA

你似乎想要一个完整的外部连接:

SELECT
    COALESCE(t1.A, t2.A) AS A,
    t1.B,
    t2.C
FROM Table1 t1
FULL OUTER JOIN t2
    ON t1.A = t2.A;

Demo