ОБНОВЛЕНИЕ КЛЮЧЕВОГО КЛЮЧА с условием WHERE - PullRequest
7 голосов
/ 08 августа 2011

Я обновляю / вставляю значения в одну таблицу с помощью функции ON DUPLICATE KEY UPDATE. Пока все хорошо.

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

Но теперь я хотел бы добиться, чтобы обновление выполнялось только в том случае, если условие (WHERE) выполняется.

Синтаксически не правильно:

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?

Большое спасибо.

1 Ответ

9 голосов
/ 08 августа 2011

Использование IF () должно работать, хотя это нехорошо:

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 )

Обновляйте поля новыми значениями только в том случае, если выполняется условие, в противном случае сохраняйте старые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...