从一个表中选择另一个表中不存在的记录

yay*_*zis 0 mysql sqlite jdbc

我有 2 个表TABLE1TABLE2在 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)

然而这个查询返回了一些我不明白的东西..哪个是正确的查询?

Gio*_*uri 5

检查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)