Я хочу вставить данные в таблицу, а если таблица уже имеет такое же входное значение rName, то это обновление этой строки (поскольку rName является уникальным индексом), и все это хорошо работает.
Но в UPDATE я бы хотел только обновить поля IF, если поле в нем еще не имеет (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)
И лучше ли это делать то, что я делаю? Это кажется немного репутирующим, поскольку у меня примерно в два раза больше полей, показанных здесь, я просто сократил этот вопрос.
Попробуй это:
... ON DUPLICATE KEY UPDATE rFormat=VALUES(rFormat), rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)), rText=VALUES(rText);
Я не использовал более продвинутый материал MySQL (например, IF) в немного, поэтому я не уверен в этом, но он должен быть прав. Ключевой частью является установка rFiles на значение, возвращаемое IF.