晚上好,
我有两个表t1和t2
在t1中,我有两个变量,ID(唯一标识每一行)和DOC(可以是多个ID共有)
在t2中,我有三个变量,ID(这里不一定唯一地标识行),AUTH和TYPE。每个ID最多有1个不同的AUTH。
示例数据:
我想要做的是选择ID为AUTH ='EP'且具有AUTH ='US'的ID的DOC。他们可以使用其他AUTH获得额外的ID,但他们必须至少拥有这两个ID。
因此,我将有一个带有DOC,ID和AUTH的最终表格(每个文档应该至少有2个ID,但如果对此DOC存在额外的AUTH和EP,则可能更多<) / p>
期望的结果:
答案 0 :(得分:1)
这应该有效:
SELECT DISTINCT (T1.ID), T1.DOC, T2.AUTH FROM T1
LEFT JOIN T2 ON T2.ID = T1.ID
WHERE T1.DOC IN( SELECT T1.DOC FROM T2
LEFT JOIN T1 ON T1.ID = T2.ID
WHERE T2.AUTH IN('EP','US')
GROUP BY T1.DOC HAVING COUNT(DISTINCT T2.AUTH) = 2) ;
答案 1 :(得分:0)
如果我能正确理解,那么查询就是这样的:
select t1.doc, t1.id, t2.auth from t1
left join t2 on t2.id = t1.id
where t1.doc in( select t1.doc from t2
left join t1 on t1.id = t2.id
where t2.auth in('EP','US') );
尽管如此,结果集基本上将成为第一个样本数据表,因为 ID 6 具有 AUTH =“EP”,因此, ID 7 与 ID 6 具有相同的 DOC 。