Обновляйте поле MYSQL, только если поле содержит ноль или 0 - PullRequest
2 голосов
/ 03 декабря 2009

Я хочу вставить данные в таблицу, тогда, если таблица уже имеет то же самое входное значение rName, она должна обновить эту строку (так как rName является уникальным индексом), что все хорошо.

Но в ОБНОВЛЕНИИ я хотел бы, чтобы он только ОБНОВЛЯЛ поля, ЕСЛИ в поле уже ничего нет (NULL).

INSERT INTO $table  
(`rDate`, `rName`, `rFormat`, `rText`) VALUES 
(CURRENT_TIMESTAMP, 'name3', 'formate22') ON DUPLICATE KEY UPDATE 
 rFormat=VALUES(rFormat), 
 IF('rFiles'=NULL,rFiles=VALUES(rFiles), rFiles=VALUES(rSizeMB)), 
 rText=VALUES(rText)

Кроме того, это лучшее, что я делаю? Это кажется немного отрешительным, так как у меня примерно вдвое больше полей, чем показано здесь, я просто сократил его для вопроса.

1 Ответ

4 голосов
/ 03 декабря 2009

Попробуйте это:

...
ON DUPLICATE KEY UPDATE
rFormat=VALUES(rFormat),
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)),
rText=VALUES(rText);

Я немного не использовал более продвинутые вещи из MySQL (например, IF), поэтому я не уверен в этом, но это должно быть правильно Ключевой частью является установка rFiles на значение, возвращаемое IF.

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