我在 sqlite 数据库中有 2 个表 TABLE1
和 TABLE2
。 TABLE 2 有 TABLE1 的一些记录。我想要的是从表 1 中选择所有记录,这些记录在表 2 中不存在。所以我编码:
String sq = "SELECT TABLE1.name, TABLE1.surname, TABLE1.id FROM TABLE1"
+ "LEFT JOIN TABLE1"
+ "ON TABLE1.id <> TABLE2.id";
但是这个查询返回了一些我不明白的东西。哪个是正确的查询?
最佳答案
检查第二个表中的 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)
关于mysql - 从一个表中选择另一个表中不存在的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30779708/