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

สลับค่า a และ b ในคอลัมน์ MySQL ด้วย CASE WHEN

เมื่อต้องการสลับค่าในคอลัมน์ที่มีเพียงสองค่าที่เป็นไปได้ (เช่น 'a' และ 'b') ให้ใช้คำสั่ง UPDATE ร่วมกับ CASE WHEN เพื่อทำได้ในคำสั่งเดียว

ตัวอย่างการสร้างตาราง

mysql> create table DemoTable ( 
    Value char(1) ); 
Query OK, 0 rows affected (1.21 sec)

เพิ่มข้อมูลสลับกันระหว่าง a และ b

mysql> insert into DemoTable values('a'); 
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('b'); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('a'); 
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('a'); 
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('b'); 
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('a'); 
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('b'); 
Query OK, 1 row affected (0.13 sec)

แสดงข้อมูลก่อนสลับ

mysql> select * from DemoTable;
+-------+
| Value |
+-------+
| a     |
| b     |
| a     |
| a     |
| b     |
| a     |
| b     |
+-------+
7 rows in set (0.00 sec)

คำสั่ง UPDATE สลับ a <-> b ด้วย CASE

mysql> update DemoTable set Value = case when Value = 'a' then 'b' else 'a' end; 
Query OK, 7 rows affected (0.17 sec)
Rows matched: 7  Changed: 7  Warnings: 0

ตรวจสอบข้อมูลหลังสลับ

mysql> select * from DemoTable;
+-------+
| Value |
+-------+
| b     |
| a     |
| b     |
| b     |
| a     |
| b     |
| a     |
+-------+
7 rows in set (0.00 sec)

คำอธิบาย: CASE WHEN Value = 'a' THEN 'b' ELSE 'a' END จะตรวจสอบแต่ละแถว: ถ้าเป็น 'a' ให้เปลี่ยนเป็น 'b' มิฉะนั้น (ต้องเป็น 'b') ให้เปลี่ยนเป็น 'a' ทำให้สลับค่าได้ในคำสั่งเดียวโดยไม่ต้องใช้ตารางชั่วคราว