[英]SQL: Return unique entries of only first table in a multi table join
我是sql的新手,所以这可能是一个简单的问题。
我有3个表A,B,CB有一个FK到A,而C有一个FK到BI想获取A中所有与B中的条目相对应的,与C中的条目相对应的不同条目。有:
SELECT DISTINCT *
FROM Peoples p
INNER JOIN Contracts c
ON p.pkey=c.person_pkey
JOIN audits a ON c.contract_pkey=a.contract_issued_for;
因此,这将返回经过审核的所有人员(重复的人员)的列表。 我如何获得它,而不是将所有表的返回列放在一起,而是仅属于表人员并且是唯一条目的所有列?
提前致谢!
更换
SELECT DISTINCT *
同
SELECT DISTINCT p.*
SELECT DISTINCT p.*
FROM Peoples p
...
对查询的最小更改是将*
更改为p.*
。 但是,我认为更好的方法是使用IN
子句而不是JOIN
:
SELECT *
FROM Peoples
WHERE pkey IN
( SELECT person_pkey
FROM Contracts
WHERE contract_pkey IN
( SELECT contract_issued_for
FROM audits
)
)
;
这清楚地表明了查询的实际作用:找到正在签发审计合同的人员,并且对这些合同或审计不感兴趣。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.