1

2 つのテーブルの情報を LEFT 結合するクエリがあります。次の結合を含むコードを使用

LEFT JOIN A on source = news_id 
LEFT JOIN B on source = other_news_id

2 つの列のデータを結合または表示して、1 つの列の情報を生成する方法。

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

すべての左結合を 1 つの列にまとめるにはどうすればよいですか?

4

4 に答える 4

4

COALESCE()値が常に 1 つしかない場合に使用できます。null 以外の最初の引数を返します。

SELECT ID, source, COALESCE(infoa, infob) AS info FROM ...
于 2013-01-07T20:37:52.097 に答える
2

COALESCE関数はこれを行います。

この関数の使用例については、 MySQL のドキュメントを参照してください。

于 2013-01-07T20:37:42.657 に答える
2

サンプル データから、noA.news_idが a と等しくなることはないようでB.other_news_id、2 つの列にCOALESCEは少なくとも 1 つの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 ...
于 2013-01-07T20:47:50.930 に答える
0

私の理解が正しければ、LEFT JOIN の代わりに INNER JOIN を使用する必要があります。

于 2013-01-07T20:37:38.717 に答える