我有 2 个表TABLE1,TABLE2在 sqlite 数据库中。表2具有表1的一些记录。我想要的是从表 1 中选择所有记录,这些记录在表 2 中不存在。所以我编码:
String sq = "SELECT TABLE1.name, TABLE1.surname, TABLE1.id FROM TABLE1"
+ "LEFT JOIN TABLE1"
+ "ON TABLE1.id <> TABLE2.id";
Run Code Online (Sandbox Code Playgroud)
然而这个查询返回了一些我不明白的东西..哪个是正确的查询?
检查NULL第二个表中的 s,例如:
SELECT TABLE1.name, TABLE1.surname, TABLE1.id
FROM TABLE1
LEFT JOIN TABLE2 ON TABLE1.id = TABLE2.id
WHERE TABLE2.id IS NULL
Run Code Online (Sandbox Code Playgroud)
替代解决方案NOT EXISTS:
SELECT TABLE1.name, TABLE1.surname, TABLE1.id
FROM TABLE1
WHERE NOT EXISTS(SELECT * FROM TABLE2 WHERE TABLE1.id = TABLE2.id)
Run Code Online (Sandbox Code Playgroud)
另一张NOT IN:
SELECT TABLE1.name, TABLE1.surname, TABLE1.id
FROM TABLE1
WHERE TABLE1.id NOT IN(SELECT id FROM TABLE2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4795 次 |
| 最近记录: |