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

MySQLは、IDのホワイトリストに基づいて行のブール列の値を条件付きで更新します

    ケースステートメントで「ELSE」を実行することを忘れませんでしたか?

    UPDATE my_table
        SET field = CASE
            WHEN id IN (/* true ids */) THEN TRUE
            WHEN id IN (/* false ids */) THEN FALSE
            ELSE field=field 
        END
    

    ELSEがない場合、評価チェーンは最後のWHENで停止し、その更新を実行すると想定します。また、更新しようとしている行を制限しているわけではありません。 ELSEを実行しない場合は、少なくとも、すべての行ではなく、必要な行のみを更新するように更新を指示する必要があります(実行しているように)。以下のWHERE句を見てください:

      UPDATE my_table
            SET field = CASE
                WHEN id IN (/* true ids */) THEN TRUE
                WHEN id IN (/* false ids */) THEN FALSE
            END
      WHERE id in (true ids + false_ids)
    


    1. PHP文字列の違いと動的な制限

    2. 特定のID値によるMysqlの順序

    3. SQL ServerでIDENTITY_INSERTがONまたはOFFに設定されているかどうかをどのように確認しますか?

    4. MyBatis列挙型の使用法