sql - 如何对表 A 和 B 进行特殊连接(仅在一对一匹配时保留 A 行并添加 B 列)
问题描述
我想将表 B 中的表 A 信息添加到表 B 中的表 A 的行中,该行在表 B 中有一个且只有一个行匹配。
示例:给定表 A
+ lastName firstName
+ A B
+ C D
+ E F
与表 B
* lastName firstName age
* A B 10
* C D 15
* C D 20
我想要表格结果
* lastName firstName age
* A B 10
* C D null
* E F null
是否可以在 SQL 中做到这一点?左连接是不够的
解决方案
有点儿
select A.lastName, A.firstName, u.age
from A
left join (
select lastName, firstName, max(age) age
from B
group by lastName, firstName
having count(*) = 1 -- or may be count(distinct age) = 1
) u on u.lastName = A.lastName and u.firstName = A.firstName
推荐阅读
- windows - 无法 RDP 进入 Windows?
- typescript - Nuxt 自定义插件导出未定义
- kubernetes - Google 的 Cloud Run 与传统的 Kubernetes 集群有何不同?
- java - 如何序列化 BCMcEliecePublicKey?
- python - 如何将 Counter 的结果放入两个列表中?
- android - findViewById() 从自定义视图返回 null
- excel - 复制粘贴宏的工作方式因活动工作表而异
- python - 从 BeautifulSoup Python 获取 CDATA
- java - 无法在 EditText 字段中发送密钥
- matlab - 有没有办法使用 scatter3 在 3D 点云散点图上显示 2D 投影?