如何从表中查找丢失的记录 - MySQL比较表

时间:2014-08-24 07:35:06

标签: php mysql

我在一个数据库中有两个MySQL表。每个表都有一个共同的字段。表格名为tableatablebtafa中的tableatbfa中的tableb包含相同的数据。 tableb是从tablea生成的tablea,因此tableb中的所有行都在tafatableb中有些行丢失。我想显示tablea中不存在的tafa | tafb | tafc ----------------------- 1 | apple | fruit 2 | carrot | veggie 3 | orange | fruit 4 | kiwi | fruit 字段。表格可能如下所示;

tableb

tbfa | tbfb   | tbfc
-----------------------
1    | apple  | fruit
2    | carrot | veggie
4    | kiwi   | fruit

3 | orange | fruit

{{1}}

我希望结果为;

{{1}}

如何使用PHP和MySQL执行此操作?

2 个答案:

答案 0 :(得分:0)

此声明应该为您提供所需的结果

select tablea.* from tablea  left join tableb on tbfa=tafa where tbfa is null

答案 1 :(得分:0)

使用左连接:

select a.*
from tablea as a left join tableb as b on a.tafa = b.tbfa
where b.tbfa is null

解释:

LEFT JOIN将返回右侧表中的所有值,并仅返回左侧表中的匹配值。如果没有where,结果将是这样的:

select a.*, b.tbfa from tablea as a left join tableb as b on a.tafa = b.tbfa

tafa | tafb   | tafc   | tbfa
-----------------------------
1    | apple  | fruit  |  1
2    | carrot | veggie |  2
3    | orange | fruit  |  NULL
4    | kiwi   | fruit  |  4

剩下的就是过滤掉tbfa具有NULL

的行