PRこの記事には商品プロモーションを含む場合があります。

sql

SQLの条件分岐 【CASE式】

このページでは、SQL文での条件分岐方法【CASE式】を解説していきます。

WHERE文で行っている条件分岐をSQLで行ってみましょう( ̄▽ ̄)

 

1.case式とは

CASE式とは以下のような記載で条件分岐をする方式です。

CASE WHEN 条件1 THEN 値1,
WHEN 条件2 THRN 値2,
ELSE 値3
END

条件1の時に値1を指定、条件2の時に値2を指定、それ以外の時は値3を指定します。
SELECTやUPDATE、DELETEなど様様な面で使用できるのでとても便利です(^^♪

2.select文でcase式を使用しよう

ではまず、select文でCASE式を使用するサンプルを紹介していきます。

以下は大学の定期試験の結果です。

サンプルではこちらを使用して説明していきます。

使用するテーブル
(test_result)

id数学(math)英語(english)物理(physics)社会(society)氏名(name)総合(total)
1100100100100田中400
279668665佐々木296
347543476アムロ211
445876778真沙良277
5889810078大野364
61222107野比51
787348755立花263
865766778286
9100989831五十嵐327

この結果で全教科の合計が300点以上のものを「合格」、

300点未満のものを「不合格」とします。

条件分岐のコードは以下のようになります。

select id, name as 氏名, total as 総合,
case when total >= 300 then '合格'
else '不合格' end as 判定
from test_result;

結果

id氏名(name)総合(total)判定
1田中400合格
2佐々木296不合格
3アムロ211不合格
4真沙良277不合格
5大野364合格
6野比51不合格
7立花263不合格
8286不合格
9五十嵐327合格

3.update文でcase式を使用しよう

次にupdate文でCASE式を使用していきましょう

先ほどのtest_resultテーブルを引き続き使用していきます。
先ほど不合格となったものに補修と課題がかされ、全員がクリアしたため300点以下の人たちの合計点数を300点に引き上げます。

コードは以下のようになります。

update test_result
set total =
case when total<300 then 300
else total end;

実行結果をselect 文で見てみましょう

select name as 氏名,total as 総合 from test_result;
氏名(name)総合(total)
田中400
佐々木300
アムロ300
真沙良300
大野364
野比300
立花300
300
五十嵐327

 

これで全員が300点以上となりましたね。

 

以上で終了となります。お疲れさまでした!(^^)!

-sql

Copyright© タカログ , 2024 All Rights Reserved Powered by AFFINGER5.