MySql で CASE ステートメントを使用すると問題が発生します。私がやろうとしていることの例として、以下にいくつかのコードを追加しました。WHEN ステートメントに一致がなければ変更は発生しないと思っていましたが、そうではないようです。
my_contacts テーブルの contact_id の値が 66 のレコードがないため、何も起こらないと考えましたが、代わりに zip_code 列のすべての値が null に変わります。どうしてこれなの?
UPDATE my_contacts
SET zip_code =
CASE
WHEN contact_id = 66 THEN '33333'
END;
ケースを使用して少数のレコードのみを更新するにはどうすればよいですか? たとえば、contact_id = 1 および contact_id =2 に一致するレコードのみを更新したいとします。この 2 つのレコードは更新されますが、既存の郵便番号が '90004' から NULL に変更されます。なぜですか?
UPDATE my_contacts
SET zip_code =
CASE
WHEN contact_id = 1 THEN '94301'
WHEN contact_id = 2 THEN '08540'
END;
クエリ OK、影響を受ける 3 行 (0.01 秒) 一致した行: 5 変更された: 3 警告: 0