2013-04-05 70 views
1

如果连续5列有0值,我想更新查询。我的第一个想法是:是否有可能在MySQL中使用IF(cond1 AND cond2,result,else result)?

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是行不通的。任何想法?

+2

你为什么不尝试一下? – 2013-04-05 07:57:10

+0

使用'if'与多个'和'是有效的。 – Meherzad 2013-04-05 07:58:16

+0

已经尝试,但失败。就像我说过的,在IF条件下使用AND不起作用 – thenoirlatte 2013-04-05 07:59:25

回答

3

IF使用AND之前由于是完全有效的,但作为Grijesh suggets的WHERE子句中使用的条件是通常的方式做到这一点。

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

+0

也许吧。这个问题不是很清楚。它可以被理解为“在IF中使用AND并且有效?”。在这种情况下,这是一个答案;-)。 – 2013-04-05 08:04:02

+0

是的,你是正确的,但由于count = if(),OP的查询不正确。我对你的答案的投票正在等待,直到你更正他的if查询。 :) – 2013-04-05 08:08:25

+0

@BartFriederichs是否正确我不确定是因为?他可以做'='任务吗? – 2013-04-05 08:13:20

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的答案是正确的和/或有效的,如果()

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()函数。

+1

这将是通常做到这一点的方式,但是OP的解决方案应该也可以正常工作(只需测试一下,MySQL不会抱怨)。 – 2013-04-05 08:02:53

+1

它的工作原理。谢谢 !!! – thenoirlatte 2013-04-05 08:03:17

相关问题