两个表

时间:2015-07-23 05:55:40

标签: mysql sql phpmyadmin

我的数据库中有两个表:

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)

我的逻辑很可能是错误的,所以我非常感谢任何指导。

3 个答案:

答案 0 :(得分:1)

您可以在WHERE子句谓词NOT IN中使用子查询然后它将仅返回id中存在的table_B

<强>子查询

此查询从id

返回table_A
SELECT table_A.id FROM table_A

然后它将被传递给NOT IN子句,如果不匹配,它将在每个记录集迭代中返回布尔true。因此id 5和6仅在主查询中返回。

最终查询

SELECT table_B.id, table_B.name FROM table_B WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A);

OR

选择所有列使用符号*而不是列列表

SELECT * FROM table_B WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A);

答案 1 :(得分:0)

您可以使用 EXISTS 功能。

Select * from table_B where Not EXISTS (select * from table_A)

答案 2 :(得分:0)

你很亲密。在我看来,你唯一需要改变的是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)

但我更喜欢第一个。