Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีสลับค่า Boolean Field ใน MySQL ด้วย Query เดียว

ใช้ฟังก์ชัน IF() เพื่อกลับค่า Boolean (0 ↔ 1) ในคำสั่ง UPDATE เดียว

ไวยากรณ์

UPDATE yourTableName 
SET yourBooleanColumn = IF(yourBooleanColumn, 0, 1);

ตัวอย่างการใช้งาน

สร้างตาราง ReverseBooleanField:

mysql> CREATE TABLE ReverseBooleanField (
    -> Id INT NOT NULL AUTO_INCREMENT,
    -> isValid BOOLEAN,
    -> PRIMARY KEY(Id)
    -> );

เพิ่มข้อมูล (true/false):

mysql> INSERT INTO ReverseBooleanField(isValid) VALUES(true);
mysql> INSERT INTO ReverseBooleanField(isValid) VALUES(false);
mysql> INSERT INTO ReverseBooleanField(isValid) VALUES(true);
mysql> INSERT INTO ReverseBooleanField(isValid) VALUES(true);
mysql> INSERT INTO ReverseBooleanField(isValid) VALUES(false);

ข้อมูลก่อนสลับ (MySQL แปลง BOOLEAN เป็น TINYINT: 1=true, 0=false)

+----+---------+
| Id | isValid |
+----+---------+
| 1  | 1       |
| 2  | 0       |
| 3  | 1       |
| 4  | 1       |
| 5  | 0       |
+----+---------+

คำสั่งสลับค่า

mysql> UPDATE ReverseBooleanField SET isValid = IF(isValid, 0, 1);
Query OK, 5 rows affected (0.21 sec)

ข้อมูลหลังสลับ

+----+---------+
| Id | isValid |
+----+---------+
| 1  | 0       |
| 2  | 1       |
| 3  | 0       |
| 4  | 0       |
| 5  | 1       |
+----+---------+

คำอธิบาย: IF(condition, true_value, false_value) - ถ้า isValid เป็น 1 (true) ให้กลายเป็น 0, ถ้าเป็น 0 ให้กลายเป็น 1