そもそも意味がわからないですよね
select
(CASE WHEN name='Banana' THEN insert into product values ('Banana' , '150', '20');
WHEN name!='Banana' THEN update product set stock = stock - 1 where name = 'Peach'
ELSE null END)
from product;
nameがBananaのときはBanana,150,20をインサートする?
→Bananaはユニークではないの?
→insertしたいのupdateしたいの?
nameがBananaではないときかつnameがPeachのとき
→PeachだったBananaじゃないのはあたりまえ
などロジックが無茶苦茶です
初めての投稿でもないのですから、そろそろ理解して
具体的に何がどうだったとき、どうしたいというサンプルを提示すべきです
データ
SQL
1create table product(name varchar(20) not null unique key,price int,stock int );
2insert into product values
3('Orange',200,12),
4('Melon',450,6),
5('Grape',340,8),
6('Apple',180,14),
7('Peach',380,5);
name | price | stock |
---|
Orange | 200 | 12 |
Melon | 450 | 6 |
Grape | 340 | 8 |
Apple | 180 | 14 |
Peach | 380 | 5 |
追加
'Banana' , '150', '20'を追加する
SQL
1insert into product values('Banana',150,20) on duplicate key update stock=stock-1;
name | price | stock |
---|
Orange | 200 | 12 |
Melon | 450 | 6 |
Grape | 340 | 8 |
Apple | 180 | 14 |
Peach | 380 | 5 |
Banana | 150 | 20 |
更新
すでにBananaがある状態で
'Banana' , '150', '20'をつかって更新すると
SQL
1insert into product values('Banana',150,20) on duplicate key update stock=stock-1;
※追加と同じSQL
name | price | stock |
---|
Orange | 200 | 12 |
Melon | 450 | 6 |
Grape | 340 | 8 |
Apple | 180 | 14 |
Peach | 380 | 5 |
Banana | 150 | 19 |
となればOK?(Bananaのstockが1減る)