我在一个数据库中有两个MySQL表。每个表都有一个共同的字段。表格名为tablea
和tableb
。 tafa
中的tablea
和tbfa
中的tableb
包含相同的数据。 tableb
是从tablea
生成的tablea
,因此tableb
中的所有行都在tafa
,tableb
中有些行丢失。我想显示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执行此操作?
答案 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
值