web-dev-qa-db-ja.com

LEFT JOINとNULL値の処理

テーブルが2つあります。

表1:

A   B 
------
1   'A'
2   'B'
3   'C'

表2:

   A   C
----------
   2   15
   3   20

次のクエリを使用しています。

SELECT table1.A, table1.B, table2.C
FROM table1
LEFT JOIN table2
ON table1.A = table2.A

問題は次のような出力で発生します。

    A   B   C
---------------
    1   'A'  null
    2   'B'  15
    3   'C'  20

Table2.Cで注文する必要があるため、nullを0として取得する方法はありますか?どんな助けでもありがたいです。

私の予想される出力は:

    A   B   C
---------------
    3  'C'  20
    2  'B'  15
    1  'A'  0 

pS:IFNULL(table2.C、0)で試しました。うまくいきませんでした。

1
Ron

これは最も効率的なソリューションかもしれません:

SELECT A, t1.B, t2.C
FROM   table1 t1
LEFT   JOIN table2 t2 USING (A)
ORDER  BY t2.C NULLS FIRST;

デフォルトでは、NULL値は最後にソートされます。これはNULLS FIRSTで元に戻すことができます。見る:

0