MySQLで特定のカラムがNULLだった場合に別のカラムの値を取りたい場合はcoalesceを使う。
2014年5月13日
ifnullを駆使すればできそうな気もするけど、簡単にやるならcoalesceを使った方がお手軽。
coalesceは、複数のカラムを指定して、存在するカラムの値を返す。
SELECT coalesce( type1, type2, type3 ) FROM profile WHERE user_id = 1;
ま、ざっくりですが、上記のsqlを投げた時に、type1がnullでtype2があれば、type2の値を返す。
type2もnullの場合は、type3を返す。
全部nullだった場合は、結局nullが返る。
SELECT coalesce( type1, type2, type3, 100 ) FROM profile WHERE user_id = 1;
上記のように最後にdefault値として100を与えておけば、全部nullだった場合に100が返る。
(全部nullだった場合に最初に見つかるのが100なので)
以上メモでした。