多个连接到一列

时间:2013-01-07 20:35:00

标签: mysql

我查询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

如何将所有左连接放入一列?

4 个答案:

答案 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