2015-06-11 90 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) 
相关问题