SQLを覚えよう::CASE式の使い方

May 27th, 2013

SQLには、switch文のように条件を書き分ける事が出来る、CASE式なるものがあるという事なので、試しに使ってみたので忘れないようメモしておきます。


参考サイト


下記のような「item」テーブルが存在した場合の、CASE式を使ったSELECT文とUPDATE文のサンプルコードをメモ。

id name price ranking
1りんご2004
2ゴリラ200000099
3ラッパ300005
4パンダ150000002
5ダニ199
6にぼし51
7シリコン85003

`price`の大きさに応じて変化する、`flag`カラムを追加したデータを取得するSQL

<?php
$sql = 'SELECT `id`,`name`,`price`,`ranking`,'
     . 'CASE'
     . ' WHEN `price` <= 10 THEN 1'
     . ' WHEN `price` > 10 AND `price` <= 100 THEN 2'
     . ' WHEN `price` > 100 AND `price` <= 1000 THEN 3'
     . ' WHEN `price` > 1000 AND `price` <= 10000 THEN 4'
     . ' WHEN `price` > 10000 THEN 5'
     . ' ELSE 0 END `flag` FROM `item`';
?>

特定のID以外の`ranking`に99を代入にして更新するSQL

<?php
$sql = 'UPDATE `item` SET'
     . ' `ranking` = CASE'
     . ' WHEN `id` = 1 THEN 1' // りんご
     . ' WHEN `id` = 6 THEN 2' // にぼし
     . ' WHEN `id` = 3 THEN 3' // ラッパ
     . ' WHEN `id` = 4 THEN 4' // パンダ
     . ' WHEN `id` = 7 THEN 5' // シリコン
     . ' ELSE 99 END'
     . ' WHERE `price` > 0';
?>
May 27th, 2013