2014-04-04 66 views
-1

兩個表在圖片中看到我有以下兩個表:加入2個條件

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 

需要看到所有從表1有表2中,但不同的改性的值相同ID的記錄。

你能幫忙嗎?

+1

您嘗試了不同的連接類型,如(左連接,右連接)等? – Mike

+0

所以只是爲了澄清...你想要表1中的所有行至少有1個表中的條目具有相同的ID,但表2中沒有條目具有相同的ID和相同的Modif? –

回答

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這裏。

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) 
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 

如果我明白你的問題的權利本應得到期望的結果