2016-11-07 45 views
0

我有以下結構的表:SQL服務器:檢索記錄不具有共同的價值觀與同一表中的另一外鍵的外鍵

Id  MemberId Field1  Field2  Data 
-------------------------------------------------- 
1  1   12   abc   1232 
2  2   13   asl   234 
3  2   12   abc   2345 
4  1   3   sd   sfsd 
5  1   5   45r   ffgf 

給定參數member1member2,我必須從member1返回所有的ID不與member2Field1Field2相同的值。

輸出例如:

member1 = 1 
member2 = 2 

預期輸出:

4 
5 

因爲第一記錄和第三記錄具有用於Field1Field2和相同的值。

如何實現這一目標?

我使用SQL Server 2014

編輯:我不允許使用遊標和臨時表(如#tempTable),我只能使用表變量

回答

0

如果我理解正確的話,你可以使用not exists

select t.* 
from t 
where not exists (select 1 
        from t t2 
        where t2.member1 = t.member1 and 
         t2.id <> t.id and 
         (t2.field1 = t.field1 or t2.field2 = t.field2) 
       ); 
+0

但如何才能使這項工作,如果你甚至不檢查是否從表T1和T2的成員是從參數值相同? –

+0

@BudaGavril。 。 。我確定了答案。我意識到我有邏輯倒退。 –

+0

但我不明白「where t2.member1 = t.member1」的邏輯。我不需要在每個where子句中檢查記錄中的成員id是否與我的參數相匹配? –

相關問題