2015-06-11 91 views
0

存在我有2個表TABLE1和sqlite的DB TABLE2。表2有一些TABLE1的記錄。我想要的是從表1中選擇所有記錄,這在TABLE2中不存在。所以我編碼:從表中選擇記錄,這不另一個表

String sq = "SELECT TABLE1.name, TABLE1.surname, TABLE1.id FROM TABLE1" 
      + "LEFT JOIN TABLE1" 
      + "ON TABLE1.id <> TABLE2.id"; 

然而,這個查詢返回的東西,我不明白它..哪個是正確的查詢?

+0

'LEFT JOIN TABLE1'或'TABLE2'? – sqluser

+0

嗯,我不知道 – yaylitzis

回答

2

檢查NULL S IN第二表所示:

SELECT TABLE1.name, TABLE1.surname, TABLE1.id 
FROM TABLE1 
LEFT JOIN TABLE2 ON TABLE1.id = TABLE2.id 
WHERE TABLE2.id IS NULL 

替代的解決方案與NOT EXISTS

SELECT TABLE1.name, TABLE1.surname, TABLE1.id 
FROM TABLE1 
WHERE NOT EXISTS(SELECT * FROM TABLE2 WHERE TABLE1.id = TABLE2.id) 

還有一個與NOT IN

SELECT TABLE1.name, TABLE1.surname, TABLE1.id 
FROM TABLE1 
WHERE TABLE1.id NOT IN(SELECT id FROM TABLE2) 
+0

我編輯問題替換SHIFT與TABLE1 – yaylitzis

+0

@yaylitzis,是的,我注意到,thx。 –

1

使用子查詢返回所有的ID現在在表1中包括那些ID,其中d不存在於表2中。

Select name, surname, id from TABLE1 where id not in (Select id from TABLE2) 
相關問題