Как говорится в заголовке, мне просто нужен вывод, если соответствие if, если оно не соответствует, тогда я не хочу никакого вывода.
В настоящее время у меня есть это, но он дает ошибку, очевидно,
...rFormat=IF(ISNULL(rFormat), VALUES(rFormat),UNCHANGED)…
Я огляделся http://dev.mysql.com/doc/refman/5.4/en/control-flow-functions.html, но не узнал, как это сделать.
Этот вопрос относится к Обновление только поля MYSQL, если поле содержит null или 0
Это используется в контексте: (как видно из приведенного выше URL)
………
ON DUPLICATE KEY UPDATE
rFormat=VALUES(rFormat),
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)),
rText=VALUES(rText);
Вы можете просто сделать
IF(ISNULL(rFormat), VALUES(rFormat), rFormat)
Я не уверен, что вы пытаетесь достичь, вызвав VALUES() на этом этапе.
Попробуйте следующее:
rFiles = COALESCE (existingColumnValue, '$ newValue')
COALESCE возвращает первое ненулевое значение. Обратите внимание, что вам понадобятся кавычки вокруг $newValue, если это строка, и не забывайте бежать. Вы не будете использовать кавычки вокруг имени столбца (existingColumnValue). Если вы также ищете строки, у которых (INT) 0 значение равно NULL, вы можете попробовать следующее:
rFiles = CASE existingColumnValue КОГДА NULL THEN '$ newValue' КОГДА 0 ТОГДА '$ newValue' ELSE existingColumnValue КОНЕЧНЫЙ СЛУЧАЙ
Мне пришлось изменить имена столбцов, чтобы я мог лучше выразить это решение. Надеюсь, вы все еще понимаете. Я предполагал, что $newValue не является другим столбцом в базе данных, но переменная передается из вашего script.
Просто используйте WHERE rFormat IS NULL
вместо IF
.