我查询LEFT从两个表中加入信息。使用以下联接的代码
LEFT JOIN A on source = news_id
LEFT JOIN B on source = other_news_id
如何连接或显示两列中的数据,以便生成一个列信息。
ID source Left Join on ID a Left Join on ID b
a 1 info1 <null>
a 2 info2 <null>
b 3 <null> info3
b 4 <null> info4
的内容
ID source info
a 1 info1
a 2 info2
b 3 info3
b 4 info4
如何将所有左连接放入一列?
答案 0 :(得分:4)
如果始终只有一个值,您可以使用COALESCE()
。它返回第一个非null参数。
SELECT ID, source, COALESCE(infoa, infob) AS info FROM ...
答案 1 :(得分:2)
COALESCE
功能会执行此操作。
有关如何使用此功能的示例,请参阅MySQL documentation。
答案 2 :(得分:2)
从示例数据中,似乎没有A.news_id
永远不等于B.other_news_id
,而您希望COALESCE
的两列至少有一个NULL
值。
我还猜你的FROM
子句是这样的:
FROM T
LEFT JOIN A on T.source = A.news_id
LEFT JOIN B on T.source = B.other_news_id
如果是这种情况,您还可以使用UNION
:
SELECT ID, source, infoa AS info
FROM T
JOIN A on T.source = A.news_id
WHERE ...
UNION ALL
SELECT ID, source, infob
FROM T
JOIN B on T.source = B.other_news_id
WHERE ...
答案 3 :(得分:0)
如果我理解正确,您需要使用INNER JOIN而不是LEFT JOIN