2013-04-05 75 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

相關問題