2016-08-15 6 views
0

に更新しましたこれはおそらく超簡単ですが、検索のためにどのように言いたいのかわかりません。私はこれが好きになるテーブルを持っています:1カラムの2つの値をSQL

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

現在はブール値に設定されています。 1はそれが現在であることを示した。 0は、それが表示目的のためにコードで使用されず、使用されないことを示します。いずれにしても、5月が選択されている場合、7月を同時に "0"に設定するUPDATE SQLクエリを作成し、 "1"に変更する方法はありますか?これまでのところ、私は "でっち上げ" しました。このawfulness:

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

異なる値を持つ2つの行を変更します。 「同時性」は、2つの「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

例えば:あなたはには2つの `UPDATE`文を必要とする

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> 
関連する問題