来自 table 的 Select 条记录在另一个 table 中不存在
Select records from a table, which don't exist in another table
我在 sqlite 数据库中有 2 个表 TABLE1
和 TABLE2
。 TABLE2 有一些TABLE1 的记录。我想要的是 select 来自 TABLE 1 的所有记录,这些记录在 TABLE2 中不存在。所以我编码:
String sq = "SELECT TABLE1.name, TABLE1.surname, TABLE1.id FROM TABLE1"
+ "LEFT JOIN TABLE1"
+ "ON TABLE1.id <> TABLE2.id";
但是这个查询 returns 我不明白。哪个是正确的查询?
在第 table 秒内检查 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)
使用子查询 return table 2 的所有 ID,现在包括 table1 中 table 2 中不存在的那些 ID。
Select name, surname, id from TABLE1 where id not in (Select id from TABLE2)
我在 sqlite 数据库中有 2 个表 TABLE1
和 TABLE2
。 TABLE2 有一些TABLE1 的记录。我想要的是 select 来自 TABLE 1 的所有记录,这些记录在 TABLE2 中不存在。所以我编码:
String sq = "SELECT TABLE1.name, TABLE1.surname, TABLE1.id FROM TABLE1"
+ "LEFT JOIN TABLE1"
+ "ON TABLE1.id <> TABLE2.id";
但是这个查询 returns 我不明白。哪个是正确的查询?
在第 table 秒内检查 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)
使用子查询 return table 2 的所有 ID,现在包括 table1 中 table 2 中不存在的那些 ID。
Select name, surname, id from TABLE1 where id not in (Select id from TABLE2)