【问题标题】:Is it possible to use IF(cond1 AND cond2,result,else result) in MySQL?是否可以在 MySQL 中使用 IF(cond1 AND cond2,result,else result)?
【发布时间】:2013-03-27 13:26:03
【问题描述】:

如果连续 5 列的值为 0,我想进行更新查询。我的第一个想法是:

UPDATE `table_name` 
SET `count` = IF(`col1`=0.00 AND 
                 `col2`=0.00 AND 
                 `col3`=0.00 AND 
                 `col4`=0.00 AND 
                 `col5`=0.00,  count+1, count)

但我认为在 IF 条件下使用 AND 是行不通的。任何想法?谢谢之前

【问题讨论】:

  • 你为什么不试试呢?
  • 使用if 和多个and 是有效的..
  • 已经尝试过,但失败了。就像我说的那样在 IF 条件下使用 AND 是行不通的
  • 您到底尝试了什么,错误是什么?
  • 为我工作检查这个小提琴sqlfiddle.com/#!2/ae21e/1

标签: mysql if-statement


【解决方案1】:

在IF 中使用AND 是完全有效的,但正如Grijesh 建议的那样,在WHERE 子句中使用条件是通常的做法。

您的查询不应该给出任何错误。

【讨论】:

  • 也许吧。问题不是很清楚。它可以读作“在有效的情况下使用 AND 吗?”。在这种情况下,这是一个答案;-)。
  • 是的,您是正确的,但由于count=if(),OP 的查询不正确。在您更正他的 if 查询之前,我对您的答案的投票正在等待中。 :)
  • @BartFriederichs 是否正确我不确定,因为?他能做= assignment 吗?
  • @BartFriederichs 我做了一个实验,我知道你是对的 谢谢:)
【解决方案2】:

我想你需要这个,如果我没记错的话,对我来说看起来很简单:

UPDATE `table_name` 
SET    `count`= `count` + 1
WHERE  `col1`=0.00 AND `col2`=0.00 AND 
       `col3`=0.00 AND `col4`=0.00 AND 
       `col5`=0.00;

编辑

@Bart Friederichs 的答案是正确的 AND/OR 在 if() 中是有效的

IF() 类似: (IF() function)

IF(<condition>, <value if true>, <value if false>)  

我进行了以下实验,据此我相信您的查询会起作用。 (这只是我的想法,我不确定)

mysql> SET  @a=IF(0 AND 1,5,3);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @a;
+------+
| @a   |
+------+
|    3 |
+------+
1 row in set (0.00 sec)

注意:您可以使用= 并且可以在 IF() 函数中使用 AND/OR。

【讨论】:

  • 这是正常的做法,是的,但 OP 的解决方案应该也能正常工作(刚刚测试过,MySQL 没有抱怨)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多