ใช้ CASE ในคำสั่ง UPDATE สลับค่า Active <-> Inactive ได้ในคำสั่งเดียว
สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
-> UserName VARCHAR(100),
-> UserStatus VARCHAR(100)
-> );
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO DemoTable VALUES('John', 'Active');
mysql> INSERT INTO DemoTable VALUES('Chris', 'Inactive');
mysql> INSERT INTO DemoTable VALUES('Bob', 'Inactive');
mysql> INSERT INTO DemoTable VALUES('Robert', 'Active');
แสดงข้อมูลก่อนอัปเดต
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+----------+------------+ | UserName | UserStatus | +----------+------------+ | John | Active | | Chris | Inactive | | Bob | Inactive | | Robert | Active | +----------+------------+
คำสั่งสลับสถานะทั้งหมด
mysql> UPDATE DemoTable
-> SET UserStatus = CASE UserStatus
-> WHEN 'Inactive' THEN 'Active'
-> ELSE 'Inactive'
-> END;
ตรวจสอบผลลัพธ์ (สลับหมดแล้ว)
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+----------+------------+ | UserName | UserStatus | +----------+------------+ | John | Inactive | | Chris | Active | | Bob | Active | | Robert | Inactive | +----------+------------+
คำอธิบาย: CASE WHEN 'Inactive' THEN 'Active' ELSE 'Inactive' END สลับค่าทุกแถวพร้อมกัน ไม่ต้องใช้ temp table หรือ UPDATE หลายครั้ง