繁体   English   中英

SQL:返回多表联接中仅第一个表的唯一条目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM