【UPDATE文】CASE式を使用して、条件により更新内容を分岐させる

以下のような製品テーブルがあるとします。

このテーブルに対し、
 ・お肉の価格(price)を2割引き
 ・果物を価格(price)を3割増し
 ・飲み物の価格(price)は変更なし
というように、1つのUPDATE文で
条件により更新内容を分岐させることができます!

CASEを使用することで実現できます!

準備

以下のSQLを実行し、テーブルの作成/データの登録をします。

--テーブルの作成
CREATE TABLE m_product
(
	id CHAR(3)  PRIMARY KEY,
	productName VARCHAR(60),
	productType VARCHAR(15),
	price       INTEGER NOT NULL
)

--データの登録
INSERT INTO m_product VALUES('001','サーロインステーキ','お肉','1000')
INSERT INTO m_product VALUES('002','豚ロース500g','お肉','1000')
INSERT INTO m_product VALUES('003','鴨肉300g','お肉','1000')
INSERT INTO m_product VALUES('004','マンゴー','果物','1000')
INSERT INTO m_product VALUES('005','パイナップル','果物','1000')
INSERT INTO m_product VALUES('006','メロン','果物','1000')
INSERT INTO m_product VALUES('007','コーラ','飲み物','1000')

SQL実行

更新内容をCASE式で分岐させます。

UPDATE m_product
SET price = CASE WHEN productType = 'お肉' THEN price * 0.8 --お肉を2割引き
		  WHEN productType = '果物' THEN price * 1.3 --果物を3割増し
		  ELSE price END               --上記以外は変更なし

結果確認

SELECT文で単純にテーブルのデータを出力させて、更新内容に問題が無いことを確認します。

SELECT
	*
FROM m_product

 

CASE式は自由度が高く非常に便利です!

タイトルとURLをコピーしました