1. ホーム
  2. mysql

[解決済み] MySQL selectクエリのIF ELSEIF

2022-03-12 06:14:12

質問

ユーザーが選択した数量に応じて、異なる価格の商品を選択しようとしています。 これは、私が取り組んでいるクエリです(構文エラーがあります)。

 select id, 
    (SELECT 
    IF(qty_1<='23',price,1)
    ELSEIF(('23'>qty_1 && qty_2<='23'),price_2,1)
    ELSEIF(('23'>qty_2 && qty_3<='23'),price_3,1)
    ELSEIF('23'>qty_3,price_4,1)
    END IF) as total 
 from product;

解決方法は?

ストアドプロシージャで使用したものがある このように を参考にすることができますが、今のような使い方は想定していません。このような場合 IF のように duskwuff . しかし Case 文の方が目に優しいです。こんな感じで。

select id, 
    (
    CASE 
        WHEN qty_1 <= '23' THEN price
        WHEN '23' > qty_1 && qty_2 <= '23' THEN price_2
        WHEN '23' > qty_2 && qty_3 <= '23' THEN price_3
        WHEN '23' > qty_3 THEN price_4
        ELSE 1
    END) AS total
 from product;

この方がすっきりして見えますね。内側の SELECT とにかく