ホームページ >データベース >mysql チュートリアル >CASE を使用した MySQL UPDATE: すべての行が更新される理由とその修正方法

CASE を使用した MySQL UPDATE: すべての行が更新される理由とその修正方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-01 07:52:14287ブラウズ

MySQL UPDATE with CASE: Why Does it Update All Rows and How to Fix It?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。