เมื่อต้องการคัดลอกค่าจากคอลัมน์หนึ่งไปยังอีกคอลัมน์ในทุกแถวของตาราง ให้ใช้คำสั่ง UPDATE พร้อมกำหนดค่าคอลัมน์ปลายทางเท่ากับคอลัมน์ต้นทาง
ตัวอย่างสถานการณ์
คัดลอกค่า StudentId ไปยัง StudentMarks ในทุกแถว
สร้างตารางและข้อมูล
mysql> create table DemoTable (
StudentId int,
StudentFirstName varchar(20),
StudentMarks int default 0
);
mysql> insert into DemoTable(StudentId,StudentFirstName) values(89,'Larry'); mysql> insert into DemoTable(StudentId,StudentFirstName) values(35,'Robert'); mysql> insert into DemoTable(StudentId,StudentFirstName) values(48,'Chris'); mysql> insert into DemoTable(StudentId,StudentFirstName) values(78,'David');
คำสั่ง UPDATE คัดลอกข้อมูล
mysql> update DemoTable set StudentMarks = StudentId;
ผลลัพธ์หลังอัปเดต
+-----------+------------------+--------------+ | StudentId | StudentFirstName | StudentMarks | +-----------+------------------+--------------+ | 89 | Larry | 89 | | 35 | Robert | 35 | | 48 | Chris | 48 | | 78 | David | 78 | +-----------+------------------+--------------+
รูปแบบคำสั่ง
UPDATE ชื่อตาราง SET คอลัมน์ปลายทาง = คอลัมน์ต้นทาง [WHERE เงื่อนไข];
เคล็ดลับและคำเตือน
- ใช้ WHERE เพื่อจำกัดขอบเขตแถวที่ต้องการอัปเดต (ป้องกันอัปเดตผิด)
- ทดสอบด้วย SELECT ก่อน:
SELECT StudentId, StudentMarks FROM DemoTable; - สำรองข้อมูล (BACKUP) ก่อนรัน UPDATE บนข้อมูลจริง
- สามารถคำนวณระหว่างทางได้:
SET col2 = col1 * 1.07(คำนวณ VAT 7%) - คัดลอกหลายคอลัมน์พร้อมกัน:
SET col2 = col1, col3 = col1 + 100