ホームページ >データベース >mysql チュートリアル >CASE を使用した MySQL UPDATE: すべての行が更新される理由とその修正方法
CASE を使用した MySQL 更新: 予期しない動作と解決策
MySQL UPDATE クエリで CASE ステートメントを利用する場合、その影響を理解することが重要です。データ。提供された例では、元のクエリは ID フィールドに基づいて特定の行を更新することを目的としていました。ただし、クエリは予期せず 2,500 万行すべてを更新し、NULL 値が導入されました。
この動作は CASE ステートメントの性質に起因します。 ELSE 句がないと、MySQL は欠落している条件を NULL と等しいものとして解釈します。したがって、指定された ID 値に一致しないすべての行は、uid 列の NULL で更新されました。
この問題を解決し、他のデータを保持しながら特定の行を選択的に更新するには、ELSE 句を使用してデフォルトを提供することを検討してください。価値を維持するか、既存の価値を維持します。さらに、WHERE 句を使用して更新する必要がある行を指定します。
たとえば、次の変更されたクエリはこれらの問題に対処します。
UPDATE `table` SET `uid` = CASE WHEN id = 1 THEN 2952 WHEN id = 2 THEN 4925 WHEN id = 3 THEN 1592 ELSE `uid` END WHERE id in (1,2,3)
このクエリは、ID 値を持つ行のみを更新するようになりました。 1、2、3 を削除し、残りの行は影響を受けません。 CASE ステートメントと ELSE 句および WHERE 句を組み合わせることで、テーブル内の他のデータを誤って変更することなく、特定の行を効率的に更新できます。
以上がCASE を使用した MySQL UPDATE: すべての行が更新される理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。