SQL 查询两个表的比较
SQL query comparison between two tables
我的数据库中有两个表:
table_A: table_B:
id user id user
1 Mike 1 Mike
2 Dan 2 Dan
3 Tom 3 Tom
4 Lina 4 Lina
5 Cynthia
6 Sam
我的目的是根据id识别Table_B中哪些用户不存在于Table_A中。我是 SQL 的新人,这就是我想出的:
SELECT id FROM Table_B
WHERE B.id NOT IN ( SELECT A.id from Table_A)
很可能我的逻辑是错误的,所以我很感激任何指导。
您可以使用 EXISTS 函数。
Select * from table_B where Not EXISTS (select * from table_A)
你很接近。在我看来,您唯一需要更改的是 A.ID 和 B.ID 参考
SELECT id FROM Table_B B
WHERE B.id NOT IN ( SELECT A.id from Table_A A)
由于您将 Table_A 称为 A,将 table_B 称为 B,因此您需要创建别名。
您也可以使用
SELECT id FROM Table_B B
WHERE NOT EXISTS ( SELECT A.id from Table_A A where A.ID = B.ID)
但我更喜欢第一个。
您可以在 WHERE
子句谓词中使用子查询 NOT IN
然后它会 return 只有 table_B
中的 id
子查询
此查询 return id
来自 table_A
SELECT table_A.id FROM table_A
然后它将传递给 NOT IN
子句,如果不匹配,它将在每次记录集迭代时 return 布尔值 true
。所以 id
5 和 6 只有 return 在主查询中。
最终查询
SELECT table_B.id, table_B.name FROM table_B WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A);
或
到select所有列使用符号*
而不是列列表
SELECT * FROM table_B WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A);
我的数据库中有两个表:
table_A: table_B:
id user id user
1 Mike 1 Mike
2 Dan 2 Dan
3 Tom 3 Tom
4 Lina 4 Lina
5 Cynthia
6 Sam
我的目的是根据id识别Table_B中哪些用户不存在于Table_A中。我是 SQL 的新人,这就是我想出的:
SELECT id FROM Table_B
WHERE B.id NOT IN ( SELECT A.id from Table_A)
很可能我的逻辑是错误的,所以我很感激任何指导。
您可以使用 EXISTS 函数。
Select * from table_B where Not EXISTS (select * from table_A)
你很接近。在我看来,您唯一需要更改的是 A.ID 和 B.ID 参考
SELECT id FROM Table_B B
WHERE B.id NOT IN ( SELECT A.id from Table_A A)
由于您将 Table_A 称为 A,将 table_B 称为 B,因此您需要创建别名。
您也可以使用
SELECT id FROM Table_B B
WHERE NOT EXISTS ( SELECT A.id from Table_A A where A.ID = B.ID)
但我更喜欢第一个。
您可以在 WHERE
子句谓词中使用子查询 NOT IN
然后它会 return 只有 table_B
中的 id
子查询
此查询 return id
来自 table_A
SELECT table_A.id FROM table_A
然后它将传递给 NOT IN
子句,如果不匹配,它将在每次记录集迭代时 return 布尔值 true
。所以 id
5 和 6 只有 return 在主查询中。
最终查询
SELECT table_B.id, table_B.name FROM table_B WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A);
或
到select所有列使用符号*
而不是列列表
SELECT * FROM table_B WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A);