我有 3 个表要加入。我们称它们为 A、B、C。我希望这两个查询的结果相同,但只有一个:
SELECT * FROM A JOIN B ON B.ext_id = A._id
SELECT * FROM A JOIN C ON C.ext_id = A._id
另外,B.ext_id和C.ext_id不能有相同的值,也就是说A._id不能在B.ext_id和C.ext_id中有相同的值
显然这个查询:
SELECT * FROM A JOIN B ON B.ext_id = A._id JOIN C ON C.ext_id = A._id
返回空值。 我应该怎么办?谢谢
最佳答案
典型的方法是使用left join
和coalesce()
:
select a.*,
coalesce(b.col1, c.col1) as col1
from a left join
b
on b.ext_id = a._id left join
c
on c.ext_id = a._id;
对两个表中您想要的所有列使用 coalesce()
。
关于mysql - 在一个查询中两次连接同一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54185764/