合并 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;
我在 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;