我有以下两张表,如图所示:
Table1
ID / Modif / Value
a / mb / Ki
a / x / Jim
Table 2
ID / Modif / Value
a / y / K
a / x / Kat
a / z / Ma
Desired Result:
ID / Modif / Value
a / mb / Ki
需要查看table1中table2中具有相同ID但是Modif值不同的所有记录。
你能帮忙吗?
答案 0 :(得分:0)
如果您只需要第一张表格中的行,请使用exists
:
select distinct c.* --, o.ID AS oID, o.Modif AS OModif, o.Val As OVal
from Table1 c
where not exists (select * from Table2 o where c.id = o.id and c.Modif = o.Modif)
答案 1 :(得分:0)
像这样加入:
SELECT DISTINCT c.* --, o.ID AS oID, o.Modif AS OModif, o.Val As OVal
FROM
Table1 c
JOIN Table2 o ON c.ID = o.ID
-- ensures there is at least 1 entry with same ID.
LEFT JOIN Table2 o2 ON c.ID = o2.ID AND c.Modif = o.Modif
WHERE o2.Modif IS NULL
-- left join + NULL check ensures there are NO entries with same ID and same Modif
如果我理解你的问题,那么这应该得到理想的结果
答案 2 :(得分:0)
抱歉,我忙于自己的工作,听起来像你需要的只是NOT IN命令,即:
SELECT DISTINCT c.ID, c.Modif, c.Value
FROM Table1 c
JOIN Table2 o on o.ID = c.ID
WHERE c.Modif NOT IN
(
Select o.Modif FROM Table2 o
)
这就是我如何处理你的情况,不确定它是否是最佳方式。
请在此处查看FIDDLE。