MySQL 从表A中选择所有不在表B中的记录


<!–

–>

MySQL 从表A中选择所有不在表B中的记录

在MySQL中,我们经常需要从两个或多个表中检索数据。当我们需要从一个表选择所有在另一个表中不存在的记录时,我们可以使用“NOT IN”子查询或“LEFT JOIN”和“IS NULL”连接。

阅读更多:

使用NOT IN子查询

“NOT IN”子查询可以在一个查询中从另一个表中选择不包含在一个列表中的值。在本例中,我们可以将表A和表B联接在一起,使用“NOT IN”子查询选择表A中不存在于表B中的所有值。

(adsbygoogle = window.adsbygoogle || []).push({});

例如,我们有两个表:

tableA

id  |  name
----|-------
1   |  apple
2   |  banana
3   |  orange


tableB

id  |  name
----|-------
1   |  apple

我们要从表A中选择不在表B中的值,可以使用以下查询:

SELECT * FROM tableA WHERE name NOT IN (SELECT name FROM tableB);

这将返回以下结果:

id  |  name
----|-------
2   |  banana
3   |  orange

使用LEFT JOIN和IS NULL连接

“LEFT JOIN”连接可以将两个表联接在一起,从而允许我们选择在一个表中存在但在另一个表中不存在的值。我们还可以使用“IS NULL”来检查左侧表中不存在的值。

以下是示例表A和表B:

tableA

id  |  name
----|-------
1   |  apple
2   |  banana
3   |  orange


tableB

id  |  name
----|-------
1   |  apple

我们可以使用以下查询从表A中选择不在表B中的值:

(adsbygoogle = window.adsbygoogle || []).push({});

SELECT * FROM tableA LEFT JOIN tableB ON tableA.name = tableB.name WHERE tableB.name IS NULL;

这将返回以下结果:

id  |  name
----|-------
2   |  banana
3   |  orange

总结

MySQL中从表A中选择所有不在表B中的记录,可以使用“NOT IN”子查询或“LEFT JOIN”和“IS NULL”连接。我们可以根据我们的需求选择一个选项,并使用适当的查询来检索所需的数据。