タグ: SQL

MySQLでNULLを含む列をORDER BYしたときの挙動

NULL値を許容するカラムをORDER BYで取り出す際、

MySQL :: MySQL 4.1 リファレンスマニュアル :: 3.3.4.6 NULL 値の使用
より

ORDER BY を処理する場合、NULL 値は、ORDER BY ... ASC では先頭に表示され、ORDER BY ... DESC では最後に表示されます。

となる。

昇順(ASC)でNULLを最後に表示したい場合は、

ORDER BY created_at IS NULL ASC, created_at ASC;

のようにする。

 

広告

MySQLでの完全外部結合

ネタ元:http://oshiete1.nifty.com/qa6019895.html

MySQLでは、FULL OUTER JOINが使えないので、以下の方法で代用する

現在あるテーブル

table : test1
value  id
——————-
ああ   3
いい   4
うう     5

table : test2
value  id
——————–
AAA   1
BBB   2
CCC   3
DDD   4

欲しい結果

NULL  NULL  AAA   1
NULL  NULL  BBB   2
ああ   3     CCC   3
いい   4     DDD   4
うう    5    NULL   NULL

 

方法

RIGHT JOINとLEFT JOINをUNIONする

SELECT * FROM test1
LEFT JOIN test2 ON test1.id=test2.id
UNION
SELECT * FROM test1
RIGHT JOIN test2 ON test1.id=test2.id