正如标题所说,如果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);
答案 0 :(得分:2)
你可以简单地做
IF(ISNULL(rFormat), VALUES(rFormat), rFormat)
然而,我不确定你现在通过调用VALUES()来实现目标。
答案 1 :(得分:2)
只需使用WHERE rFormat IS NULL
代替IF
。
答案 2 :(得分:2)
试试这个:
rFiles = COALESCE(existingColumnValue,'$ newValue')
COALESCE返回第一个非空值。请注意,如果它是一个字符串,你需要$ newValue周围的引号,并且不要忘记转义。您不会使用列名称周围的引号(existingColumnValue)。如果您还在寻找具有(INT)0作为值以及NULL的行,您可能想尝试这样:
rFiles = CASE existingColumnValue 什么时候那么'$ newValue' 什么时候0,然后'$ newValue' ELSE existingColumnValue 结束案例
我必须更改列名,以便我能更好地表达解决方案。我希望你仍然明白。我假设$ newValue不是数据库中的另一列,而是从脚本传递的变量。