เมื่อต้องการสลับค่าในคอลัมน์ที่มีเพียงสองค่าที่เป็นไปได้ (เช่น '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' ทำให้สลับค่าได้ในคำสั่งเดียวโดยไม่ต้องใช้ตารางชั่วคราว