2011-08-08 15 views
7

ON DUPLICATE KEY UPDATE機能を持つ1つのテーブルに値を更新/挿入します。これまでのところすべてが問題ありません。WHERE条件付きの重複キー更新で

INSERT INTO table1 SET field1=aa, field2=bb, field3=cc 
ON DUPLICATE KEY UPDATE SET field1=aa, field2=bb, field3=cc; 

しかし、今私は、条件(WHERE)がtrueの場合、更新にのみ行われることを実現したいと思います。

構文が正しくありません:

INSERT INTO table1 SET field1=aa, field2=bb, field3=cc 
ON DUPLICATE KEY UPDATE SET field1=aa, field2=bb, field3=cc WHERE field4=zz; 

任意のアイデアを正しいSQL文がありますか?

ありがとうございます。それは素敵ではないのですけれどもIFを使用して

答えて

9

()、動作するはずです:

INSERT INTO table1 SET 
field1=aa, 
field2=bb, 
field3=cc 
ON DUPLICATE KEY UPDATE SET 
field1 = IF(field4 = zz, aa, field1), 
field2 = IF(field4 = zz, bb, field2), 
field3 = IF(field4 = zz, cc, field3) 

のみ条件が満たされた場合、新しい値を持つフィールドを更新し、そうでない場合は古いものを維持します。