正如标题所说,如果if匹配,我只想要一个输出,如果不匹配,那么我不想要任何输出。
我目前有这个,但是它给出了一个明显的错误
...rFormat=IF(ISNULL(rFormat), VALUES(rFormat),UNCHANGED)…我环顾了一下http://dev.mysql.com/doc/refman/5.4/en/control-flow-functions.html,但并不知道该怎么做。
这个问题有点与Only update the MYSQL field if the field contains null or 0有关
这在以下上下文中使用:(如上面的URL所示)
………
ON DUPLICATE KEY UPDATE
rFormat=VALUES(rFormat),
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)),
rText=VALUES(rText);发布于 2009-12-03 18:17:26
你可以简单地这样做
IF(ISNULL(rFormat), VALUES(rFormat), rFormat)但是,我不确定您在这一点上调用VALUES()的目的是什么。
发布于 2009-12-03 18:17:31
只需使用WHERE rFormat IS NULL而不是IF。
发布于 2009-12-03 20:57:32
试试这个:
rFiles =合并(existingColumnValue,'$newValue')
COALESCE返回第一个非空值。请注意,如果$newValue是字符串,则需要用引号将其括起来,并且不要忘记转义。您不会在列名(existingColumnValue)两边使用引号。如果您还在查找值为(INT) 0且为NULL的行,则可能需要尝试执行以下操作:
rFiles = CASE existingColumnValue WHEN NULL THEN '$newValue‘WHEN 0 THEN '$newValue’否则existingColumnValue END CASE
我必须更改您的列名,以便更好地表达解决方案。我希望你仍然能理解。我假设$newValue不是数据库中的另一列,而是从脚本传递的变量。
https://stackoverflow.com/questions/1838971
复制相似问题