sql - SELECT 从两个表中获取结果,其中一个值仅在表列中出现一次
问题描述
抱歉,我知道这应该相对简单,并且可能以前已经回答过,但我自己被屏蔽了,在这里找不到匹配的帖子。
我有两张表公司和联系人。一个联系人可以关联到 0 个或 1 个公司,一个公司可以有 1 个或多个联系人,并且可以将一个设置为“主要联系人”
公司(ccyID、ccyname、primconID)
________________________________________________
| ccyID | ccyname | PrimconID |
------------------------------------------------
| aaaaaaa | Company A | NULL |
| bbbbbbb | Company B | NULL |
| ccccccc | Company C | vvvvvvv |
________________________________________________
联系人(conID,名字,姓氏,ccyID)
__________________________________________________
| conID | first | last | companyID |
--------------------------------------------------
| zzzzzzz | Stand | Alone | NULL |
| yyyyyyy | Only | Contact | aaaaaaa |
| xxxxxxx | CompanyB | First | bbbbbbb |
| wwwwwww | CompanyB | Second | bbbbbbb |
| vvvvvvv | CompanyC | Only | ccccccc |
_________________________________________________
我需要一个 SELECT ,当公司只有一个联系人时,它将返回 companyID 和 contactID,并且没有设置 PrimconID 即我想要返回的上述数据
conID ccyID
----------------
yyyyyyy aaaaaaa
(最终的想法是我将更新表格以使公司的单独联系人成为主要联系人)
解决方案
按公司对联系人进行分组,以仅保留计数为 1 的联系人,并确保他们在没有主要联系人的公司集中:
select companyid, max(conid)
from contacts
group by companyid
having count(*) = 1
and companyid in (select ccyid from companies where primconid is null)
order by companyid;
推荐阅读
- python - 模型输出的维度和预测值不同,但是 model.fit 它仍然不会抛出错误
- html - 无法在可滚动容器内使 div 全宽
- python - “标题”:“不支持的媒体类型”,“状态”:从 python 请求 API 时出现 415 错误
- javascript - 以数据为可观察的,在本地数组中修改和存储变化
- html - Spring MVC:如何在不发出 HTTP 请求的情况下保存表单数据?
- r - R 中非线性 PCA 的 homals 包:dimnames(x) <- dn 中的错误:“dimnames”[1] 的长度不等于数组范围
- list - SwiftUI 问题(有列表和模拟器)
- flutter - 验证器适用于所有领域,除了颤振中的一个
- android - Firebase 插入新的孩子
- c - 使我的 gtk 应用程序可以在用 c 语言设计的不同平台上访问