sql >> データベース >  >> RDS >> Mysql

MySQL CASE ... WHERE...THENステートメント

    CASEではありません 複数のWHEN...THENが必要です 、それはあなたがそれを与えるすべてのデータを処理しなければならないということです。

    句の1つを削除すると、穴が残ります。例:

    UPDATE partsList SET quantity =  
    CASE
      WHEN partFK = 1 THEN 4
    END
    WHERE buildFK = 1;
    

    この更新ステートメントでは、parkFK が2の場合、CASEが入力を処理できないため、更新は失敗します。

    where句に別の行を追加してソースデータを制限することができます(例:AND partFK in (1,2) )、またはELSEを追加できます ケース式に。

    UPDATE partsList SET quantity =  
    CASE
      WHEN partFK = 1 THEN 4
      WHEN partFK = 2 THEN 8
      ELSE 12 
    END
    WHERE buildFK = 1;
    

    ただし、示したSQLステートメントに基づくと、おそらくより良い方法があります。おそらく、partFKは他のテーブルへの外部キーです。 quantityの値を取得できますか そこから?



    1. MySQLでn番目の行を見つける方法

    2. DjangoORMは列の特定の値に対してORDERBYを実行できますか?

    3. データベースインデックスの状態を分析する方法

    4. PDOを使用したデータベース内の行の一致に問題がある