sql - 在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.a) a, c1.b, c2.c
from (...) c1
full join (...) c2 on c2.a = c1.a
推荐阅读
- ruby-on-rails - 如何使用 Prawn Gem 压缩用户在 Rails 中上传的 pdf
- javascript - React 擦除输入字段的值
- sql - 在 sql 中创建更多行的逻辑
- python - How to start a Python Integer WITH leading 0s?
- java - Updating one list also updating referenced list in Java
- unity3d - Manifest merger failed with multiple errors in unity 2019.4.11f1
- python - 为什么我尝试在 R 中使用 keras 包时出错?
- java - Modify header cookies for static assets on tomcat and proxied with apache httpd
- javascript - 为什么每次击键后 React 文本输入都会失去焦点?
- docker - Docker 桌面 - 关于性能不佳的文件共享通知