2013-04-09 41 views
1

我有兩個表T1和T2SQL與空表加入了 「不等於」 運算符

T1的列ID &數據

T2的列ID & T1_id

我想加盟T1與T2.T1_id

.ID我想T1其ID的所有記錄中不存在T2 即T1.id <> T2.T1_id

所以如果T2爲空T1的所有記錄將被取回

問題是

  1. 如果我使用LEFT JOIN書房T1 ID的所有記錄被提取,即使 相應記錄T1_id是出現在T2中。
  2. 如果我不使用LEFT JOIN一切工作除了當T2爲空,則沒有記錄被取出

還我會愛一個LINQ等效。

回答

3

你接近你想要的。 LEFT JOIN就足夠了,您聲明中唯一缺失的是WHERE子句條件。

SELECT a.* 
FROM T1 a 
     LEFT JOIN T2 b 
      ON a.ID = b.T1_ID 
WHERE b.T1_ID IS NULL 

這裏的LINQ版本:

var _result = from a in T1 
       join b in T2 on a.ID equals b.T1_ID into b_join 
       from b in b_join.DefaultIfEmpty() 
       where b.T1_ID == null 
       select a;