MySQL联接3个表没有行合并

时间:2019-03-19 13:18:42

标签: mysql

我正在尝试编写查询以从3个表中选择一些行,但是我有一些特殊需要。

所以说我有table1,table2,table3作为t1,t2,t3 t1包含一个id列,它是t2和t3中的外键。

t1内容:

id 
1  

t2内容:

id fk val1
1  1  123
2  1  234 

t3内容:

id fk val2
1  1  345
2  1  456 

我要输出的结果是:

t2.id t3.id fk val1 val2
1     NULL  1  123  NULL
2     NULL  1  234  NULL 
NULL  1     1  NULL 345
NULL  2     1  NULL 456 

到目前为止,我转到了该查询,但是我的fk列分为两列。

SELECT * FROM t2 
LEFT JOIN t3 ON (FALSE) 
WHERE t2.Fk=1
UNION ALL 
SELECT * FROM t2 
RIGHT JOIN t3 ON (FALSE) 
WHERE t3.Fk=1

任何建议如何?

1 个答案:

答案 0 :(得分:0)

使用coalesce()

SELECT t2.id, t3.id, coalesce(t2.fk,t3,fk) as fk val1, val2 FROM t2 
LEFT JOIN t3 ON (FALSE) 
WHERE t2.Fk=1
UNION ALL 
SELECT t2.id, t3.id, coalesce(t2.fk,t3,fk) as fk val1, val2 FROM t2 
RIGHT JOIN t3 ON (FALSE) 
WHERE t3.Fk=1