MYSQL IF (expr1, expr2, expr3), но я не хочу никакого expr3 (если expr3, то ничего не выводится - PullRequest
0 голосов
/ 03 декабря 2009

Как видно из заголовка, я просто хочу вывод, если сопоставлено, если не сопоставлено, то я не хочу выводить.

В настоящее время у меня есть это, но оно, очевидно, выдает ошибку

...rFormat=IF(ISNULL(rFormat), VALUES(rFormat),UNCHANGED)…

Я огляделся http://dev.mysql.com/doc/refman/5.4/en/control-flow-functions.html, но действительно не понял, как это сделать.

Этот вопрос как бы связан с Обновлять поле MYSQL, только если поле содержит ноль или 0

Используется в контексте: (как видно из приведенного выше URL)

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

Ответы [ 3 ]

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

Просто используйте WHERE rFormat IS NULL вместо IF.

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

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

rFiles = COALESCE (существующиеColumnValue, '$ newValue')

COALESCE возвращает первое ненулевое значение. Обратите внимание, что вам понадобятся кавычки вокруг $ newValue, если это строка, и не забудьте убежать. Вы не будете использовать кавычки вокруг имени столбца (существующий столбец). Если вы также ищете строки, которые имеют (INT) 0 в качестве значения, а также NULL, вы можете попробовать это:

rFiles = CASE существующийColumnValue КОГДА NULL THEN '$ newValue' КОГДА 0 THEN '$ newValue' ELSE существующийColumnValue КОНЕЦ СЛУЧАЯ

Мне пришлось изменить названия ваших столбцов, чтобы я мог лучше выразить решение. Я надеюсь, что вы все еще понимаете. Я предполагал, что $ newValue - это не другой столбец в базе данных, а переменная, передаваемая из вашего сценария.

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

Вы могли бы просто сделать

IF(ISNULL(rFormat), VALUES(rFormat), rFormat)

Я не уверен, что вы пытаетесь достичь, вызывая VALUES (), однако.

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