Dùng hàm IF() hoặc CASE trong lệnh UPDATE để lật giá trị boolean (MySQL lưu boolean dưới dạng TINYINT(1): 1 = true, 0 = false).
Cú pháp
UPDATE ten_bang
SET cot_boolean = IF(cot_boolean, 0, 1);
Hoặc dùng CASE:
UPDATE ten_bang
SET cot_boolean = CASE WHEN cot_boolean THEN 0 ELSE 1 END;
Ví dụ minh họa
Tạo bảng ReverseBooleanField:
CREATE TABLE ReverseBooleanField (
Id INT NOT NULL AUTO_INCREMENT,
isValid BOOLEAN,
PRIMARY KEY (Id)
);
INSERT INTO ReverseBooleanField (isValid) VALUES
(true), (false), (true), (true), (false);
Dữ liệu gốc (MySQL hiển thị 1/0):
+----+---------+
| Id | isValid |
+----+---------+
| 1 | 1 |
| 2 | 0 |
| 3 | 1 |
| 4 | 1 |
| 5 | 0 |
+----+---------+
Truy vấn đảo ngược
UPDATE ReverseBooleanField
SET isValid = IF(isValid, 0, 1);
Kết quả sau cập nhật:
+----+---------+
| Id | isValid |
+----+---------+
| 1 | 0 |
| 2 | 1 |
| 3 | 0 |
| 4 | 0 |
| 5 | 1 |
+----+---------+
Lưu ý: Câu lệnh cập nhật toàn bộ bảng. Thêm WHERE nếu chỉ muốn đảo một phần.