首页 > 解决方案 > 连接两个表时返回 SQL 中的唯一值

问题描述

我有一个问题,我很难解决如何使用内部连接实际连接两个表的问题,其中显示的返回值只能是两个表上的唯一值。

例如:如果表 A 包含:

ID       Name
-------------------
1        Andy
2        Anthony
3        Sandy

和表 B:

ID       Job       
----------------------
1        Student
1        Entrepreneur
3        CEO

它将只返回 Sandy 作为 CEO,而不是返回 ANDY 作为学生和企业家的工作。

非常感谢您的时间和关注。

标签: sql

解决方案


一个简单的连接和聚合似乎在这里工作:

SELECT a.ID, MAX(a.Name) AS Name, MAX(b.Job) AS Job
FROM TableA a
INNER JOIN TableB b
    ON b.ID = a.ID
GROUP BY a.ID
HAVING COUNT(*) = 1;

演示

这里的逻辑是内部连接过滤掉 A 表中的人员,而 B 表中根本没有任何匹配项。对于那些确实有匹配的人,我们仅通过检查计数来保留单个工作匹配。


推荐阅读