2016-08-15 58 views
0

這可能是非常容易的,但我不確定如何將它用於搜索目的。我有一張桌子,像這樣的東西:使用SQL更新了2列中的1列值

id month current 
1 may  0 
2 june 0 
3 july 1 

當前設置爲布爾值。 1表示它是最新的。 0表明它不是也不會在代碼中用於顯示目的。無論哪種方式,我怎樣才能寫一個UPDATE SQL查詢來同時將7月設置爲「0」,如果選擇5月,可以更改爲「1」?到目前爲止,我已經 「炮製」 這這場可怕:

if(isset($_POST["setMonth"])){ 
    $month = $_POST["monthname"]; // Storing Selected Value In Variable 
    $query_set_month = "UPDATE months SET current = 0 WHERE month = $current_month AND current = 1"; //this will "unset" my current month...? 
    $result_month = mysql_query($query_set_month) or die('Query failed: ' . 
        mysql_error() . "<br />\n$sql"); 
} 
+0

需要兩個'UPDATE'語句用不同的值修改兩行。 「同時性」是通過將兩個「UPDATE」語句包裝到一個事務中來實現的。 – axiac

回答

1

你需要可以看看這樣的說法:

$query_set_month = "UPDATE months SET current=IF(month='$current_month', 1, 0) 
        WHERE month='$current_month' OR current=1"; 
+0

我沒有使用這個權利或什麼......它完全沒有。 –

0

如:

CREATE TABLE my_table (x CHAR(1),y TINYINT NOT NULL DEFAULT 0); 

INSERT INTO my_table VALUES ('a',0),('b',1),('c',0); 

SELECT * FROM my_table; 
+------+---+ 
| x | y | 
+------+---+ 
| a | 0 | 
| b | 1 | 
| c | 0 | 
+------+---+ 

UPDATE my_table 
    SET y = 1 XOR y 
WHERE x IN ('b','c'); 

SELECT * FROM my_table; 
+------+---+ 
| x | y | 
+------+---+ 
| a | 0 | 
| b | 0 | 
| c | 1 | 
+------+---+ 
3 rows in set (0.00 sec) 

mysql>