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

อัปเดตข้อมูลสลับค่าโดยไม่ใช้ temporary table ใน MySQL

ใช้ 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 หลายครั้ง