Để thay thế các giá trị trong bảng, hãy sử dụng câu lệnh CASE. Để hiểu khái niệm, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau
mysql> create table replaceValueDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(10), -> isGreaterThan18 varchar(10) -> ); Query OK, 0 rows affected (0.49 sec)
Chèn một số bản ghi vào bảng bằng lệnh chèn.
Truy vấn như sau
mysql> insert into replaceValueDemo(Name,isGreaterThan18) values('John','YES'); Query OK, 1 row affected (0.24 sec) mysql> insert into replaceValueDemo(Name,isGreaterThan18) values('Carol','NO'); Query OK, 1 row affected (0.16 sec) mysql> insert into replaceValueDemo(Name,isGreaterThan18) values('Mike','YES'); Query OK, 1 row affected (0.20 sec) mysql> insert into replaceValueDemo(Name,isGreaterThan18) values('Bob','YES'); Query OK, 1 row affected (0.17 sec) mysql> insert into replaceValueDemo(Name,isGreaterThan18) values('Larry','NO'); Query OK, 1 row affected (0.09 sec) mysql> insert into replaceValueDemo(Name,isGreaterThan18) values('David','NO'); Query OK, 1 row affected (0.11 sec) mysql> insert into replaceValueDemo(Name,isGreaterThan18) values('James','DONOTKNOW'); Query OK, 1 row affected (0.14 sec) mysql> insert into replaceValueDemo(Name,isGreaterThan18) values('Robert','DONOTKNOW'); Query OK, 1 row affected (0.13 sec)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.
Truy vấn như sau
mysql> select *from replaceValueDemo;
Sau đây là kết quả
+----+--------+-----------------+ | Id | Name | isGreaterThan18 | +----+--------+-----------------+ | 1 | John | YES | | 2 | Carol | NO | | 3 | Mike | YES | | 4 | Bob | YES | | 5 | Larry | NO | | 6 | David | NO | | 7 | James | DONOTKNOW | | 8 | Robert | DONOTKNOW | +----+--------+-----------------+ 8 rows in set (0.00 sec)
Đây là truy vấn để thay thế các giá trị trong bảng MySQL
mysql> update replaceValueDemo set isGreaterThan18=case when isGreaterThan18='YES' THEN 'NO' ELSE 'YES' END -> where isGreaterThan18 IN('YES','NO'); Query OK, 6 rows affected (0.19 sec) Rows matched: 6 Changed: 6 Warnings: 0
Hãy để chúng tôi kiểm tra các bản ghi bảng một lần nữa.
Truy vấn như sau
mysql> select *from replaceValueDemo;
Sau đây là kết quả với các giá trị được thay thế
+----+--------+-----------------+ | Id | Name | isGreaterThan18 | +----+--------+-----------------+ | 1 | John | NO | | 2 | Carol | YES | | 3 | Mike | NO | | 4 | Bob | NO | | 5 | Larry | YES | | 6 | David | YES | | 7 | James | DONOTKNOW | | 8 | Robert | DONOTKNOW | +----+--------+-----------------+ 8 rows in set (0.00 sec)