MySQLで特定のカラムがNULLだった場合に別のカラムの値を取りたい場合はcoalesceを使う。

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なので)

以上メモでした。

返信を残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください