สามารถรวมค่าจาก 2 คอลัมน์แล้วเก็บไว้ในคอลัมน์ที่ 3 ได้โดยใช้คำสั่ง ALTER TABLE เพิ่มคอลัมน์ใหม่ ตามด้วย UPDATE ร่วมกับฟังก์ชัน CONCAT()
Syntax
ALTER TABLE yourTableName ADD COLUMN yourColumnName dataType; UPDATE yourTableName SET yourAddedColumnName = CONCAT(yourColumnName1, ' ', yourColumnName2);
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล
mysql> create table DemoTable1590 ( FirstName varchar(20), LastName varchar(20) ); Query OK, 0 rows affected (0.57 sec)
mysql> insert into DemoTable1590 values('Adam','Smith'); Query OK, 1 row affected (0.45 sec)
mysql> insert into DemoTable1590 values('John','Doe'); Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable1590 values('David','Miller'); Query OK, 1 row affected (0.16 sec)
ข้อมูลต้นฉบับ:
mysql> select * from DemoTable1590;
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | Adam | Smith | | John | Doe | | David | Miller | +-----------+----------+ 3 rows in set (0.00 sec)
2. เพิ่มคอลัมน์ FullName และอัปเดตข้อมูล
mysql> alter table DemoTable1590 add column FullName varchar(40); Query OK, 0 rows affected (0.54 sec) mysql> update DemoTable1590 set FullName = concat(FirstName, ' ', LastName); Query OK, 3 rows affected (0.56 sec)
3. ตรวจสอบผลลัพธ์
mysql> select * from DemoTable1590;
+-----------+----------+--------------+ | FirstName | LastName | FullName | +-----------+----------+--------------+ | Adam | Smith | Adam Smith | | John | Doe | John Doe | | David | Miller | David Miller | +-----------+----------+--------------+ 3 rows in set (0.00 sec)
เทคนิคเพิ่มเติม
ใช้ CONCAT_WS() สำหรับจัดการ NULL อัตโนมัติ
หากคอลัมน์ใดคอลัมน์หนึ่งเป็น NULL, CONCAT() จะคืนค่า NULL ทั้งหมด แต่ CONCAT_WS() (Concatenate With Separator) จะข้าม NULL ไป:
UPDATE DemoTable1590 SET FullName = CONCAT_WS(' ', FirstName, LastName);
เพิ่มคอลัมน์พร้อมค่าเริ่มต้น (Generated Column) - MySQL 5.7+
ALTER TABLE DemoTable1590 ADD COLUMN FullName VARCHAR(40) GENERATED ALWAYS AS (CONCAT(FirstName, ' ', LastName)) STORED;
สรุป: ใช้ ALTER TABLE ... ADD COLUMN สร้างคอลัมน์ใหม่ แล้ว UPDATE ... SET ... = CONCAT() เพื่อรวมค่า สำหรับข้อมูลที่อาจมี NULL แนะนำให้ใช้ CONCAT_WS() แทน