ホームページ >データベース >mysql チュートリアル >CASE を使用して動的値の割り当てを行う MySQL エントリを更新するにはどうすればよいですか?

CASE を使用して動的値の割り当てを行う MySQL エントリを更新するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 03:34:03811ブラウズ

How to Update a MySQL Entry Using CASE for Dynamic Value Assignment?

新しい値に CASE を使用して MySQL のエントリを効果的に更新する方法

新しい値の CASE ステートメントを使用して MySQL のエントリを更新するには値を指定するには、次の手順に従います:

  • 構文:
UPDATE table_name
SET column_name = CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE valueN
END
  • 例:
UPDATE ae44
SET price = CASE
    WHEN ID = 'AT259793380' THEN '500'
    WHEN ID = 'AT271729590' THEN '600'
    WHEN ID = 'AT275981020' THEN '700'
    ELSE NULL    -- Optional: Set values for the remaining matching ID values
END

注: 質問によって提供されるクエリは、他の ID を持つレコードの価格を NULL に更新します。これを回避するには:

オプション 1: デフォルト値を指定します:

UPDATE ae44
SET price = CASE
    WHEN ID IN ('AT259793380', 'AT271729590', 'AT275981020') THEN
        CASE
            WHEN ID = 'AT259793380' THEN '500'
            WHEN ID = 'AT271729590' THEN '600'
            WHEN ID = 'AT275981020' THEN '700'
        END
    ELSE
        price
    END

オプション 2: JOIN を使用します:

UPDATE ae44
JOIN (
    SELECT  'AT259793380' AS oldval, '500' AS newval
    UNION ALL
    SELECT  'AT271729590' AS oldval, '600' AS newval
    UNION ALL
    SELECT  'AT275981020' AS oldval, '700' AS newval
) q ON ae44.id = q.oldval
SET price = q.newval

以上がCASE を使用して動的値の割り当てを行う MySQL エントリを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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