首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL IF(expr1,expr2,expr3),但我不想要任何expr3 (如果是expr3,则不输出任何内容

MYSQL IF(expr1,expr2,expr3),但我不想要任何expr3 (如果是expr3,则不输出任何内容
EN

Stack Overflow用户
提问于 2009-12-03 18:14:29
回答 3查看 333关注 0票数 0

正如标题所说,如果if匹配,我只想要一个输出,如果不匹配,那么我不想要任何输出。

我目前有这个,但是它给出了一个明显的错误

代码语言:javascript
复制
...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所示)

代码语言:javascript
复制
………
ON DUPLICATE KEY UPDATE
rFormat=VALUES(rFormat),
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)),
rText=VALUES(rText);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-03 18:17:26

你可以简单地这样做

代码语言:javascript
复制
IF(ISNULL(rFormat), VALUES(rFormat), rFormat)

但是,我不确定您在这一点上调用VALUES()的目的是什么。

票数 2
EN

Stack Overflow用户

发布于 2009-12-03 18:17:31

只需使用WHERE rFormat IS NULL而不是IF

票数 2
EN

Stack Overflow用户

发布于 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不是数据库中的另一列,而是从脚本传递的变量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1838971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档