ใช้ฟังก์ชัน 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