晚上好
我有两个表 t1 和 t2
在 t1 中,我有两个变量,ID(唯一标识每一行)和 DOC(多个 ID 可以通用)
在 t2 中,我有三个变量,ID(不一定唯一标识此处的行)、AUTH 和 TYPE。每个 ID 最多有 1 个不同的 AUTH。
示例数据:
我想做的是选择 ID 为 AUTH='EP' 且 ID 为 AUTH='US' 的 DOC。他们可以有其他 AUTH 的额外 ID,但他们必须至少有这两个。
因此,我将有一个包含 DOC、ID 和 AUTH 的最终表(每个文档应该至少有 2 个 ID,但如果此 DOC 存在对 US 和 EP 的额外 AUTH,则可能更多)
期望的结果:
最佳答案
这应该有效:
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) ;
关于Mysql:选择与多行上的多个条件匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39646530/