3

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

4

2 に答える 2