在SQL中合并两个查询

问题描述

我在SQL查询中有一个问题。

我有2个选择:

一个显示

 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

它没有显示第二张表的值C,

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

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

它没有显示一个表的值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.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;

screen capture from demo link below

Demo