เพื่อสลับข้อมูลระหว่างสองคอลัมน์ใน MySQL ให้ใช้แนวคิดตัวแปรชั่วคราวครับ
สร้างตารางตัวอย่าง (จะสลับ Name1 กับ Name2)
mysql> create table DemoTable (
-> Name1 varchar(100),
-> Name2 varchar(100)
-> );
Query OK, 0 rows affected (0.58 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into DemoTable values('John Smith', 'Chris Brown');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('David Miller', 'Jone Doe');
Query OK, 1 row affected (0.16 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
ผลลัพธ์
+--------------+-------------+ | Name1 | Name2 | +--------------+-------------+ | John Smith | Chris Brown | | David Miller | Jone Doe | +--------------+-------------+ 2 rows in set (0.00 sec)
คำสั่งสลับข้อมูลระหว่างสองคอลัมน์
mysql> update DemoTable
-> SET Name1 = (@tmpName := Name1), Name1 = Name2, Name2 = @tmpName;
Query OK, 2 rows affected (0.13 sec)
Rows matched: 2 Changed: 2 Warnings: 0
ตรวจสอบข้อมูลอีกครั้ง
mysql> select * from DemoTable;
ผลลัพธ์
+-------------+--------------+ | Name1 | Name2 | +-------------+--------------+ | Chris Brown | John Smith | | Jone Doe | David Miller | +-------------+--------------+ 2 rows in set (0.00 sec)
คำอธิบาย: ใช้ user variable @tmpName เก็บค่า Name1 เดิม แล้วมอบ Name2 ให้ Name1 และมอบ @tmpName ให้ Name2 ในคำสั่ง UPDATE เดียว