我在sqlite DB中有2个表TABLE1
和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 :(得分:2)
在第二个表中检查NULL
,如:
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)
答案 1 :(得分:1)
使用子查询返回表2的所有id,现在包括table1中表2中不存在的那些id。
Select name, surname, id from TABLE1 where id not in (Select id from TABLE2)