Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL thay thế các giá trị trong một bảng?

Để 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)