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

MySQL更新クエリでIfThenElseを使用する方法は?

    あなたは99%そこにいたと思います:

    UPDATE table
    SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
    WHERE A IS NOT NULL;
    

    && A > 1を追加します 2番目のIFステートメントに移動し、3番目の条件が満たされます。

    編集:

    ネストされたIFという質問と提案に対する@Andreのコメントによる 読みにくいので、不要な作業を行わずに読み取り可能ないくつかのクエリとしてこれを行うこともできます。

    UPDATE table SET A = 20 WHERE A > 20;
    UPDATE table SET A = 0 WHERE A <= 1;
    

    AがNULLの場合、これらの条件のいずれも満たさないため、AがNULLでないことを指定する必要がなくなります。

    次に、@Andreが提案したように3番目の条件は必要ありません。 Aが1〜20の場合、そのままになります。

    最後に、Aを1以下に設定するAを0に設定することは、珍しいようです。 1の値は0に変更されます。1未満の値(負の値を含む)を0に設定するだけの場合は、<を交換する必要があります。 <=の場合 。



    1. MySQL列で未使用の最小値を取得します

    2. SQLSTATE[HY000][2002]接続に失敗しました。-ローカルサーバーからリモートサーバーに接続しようとしたとき

    3. これらの3つのヒントを使用して、SQLServerのパフォーマンスチューニングを改善します

    4. リンクテーブルに基づいてrowNameを出力するにはどうすればよいですか?