mysql - 在一个查询中两次连接同一张表

标签 mysql sql

我有 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 joincoalesce():

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/

相关文章:

PHP PDO fetchAll() 在选择临时表时返回空数组

Python/Mysql 俄语插入

mysql - 为什么在oracle中引入散列分区?有什么好处

php - 关键字 GO 在 PHP 中抛出错误

mysql - SQL 输出不是预期的。我究竟做错了什么?

php - mysql 使用 php 和 group_concat 输出到 json

mysql - 如何使用左连接减去值的总和?

mysql - 如何获得与组组合的排序列表

java - 我这个SQL语句哪里错了?

mysql - 将两行结果合并为一行 MYSQL