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

อัปเดตคอลัมน์ในตารางหนึ่งจากค่าคอลัมน์ตารางอื่นใน MySQL ด้วย JOIN

ใน MySQL สามารถใช้ JOIN ภายในคำสั่ง UPDATE เพื่ออัปเดตคอลัมน์ในตารางหนึ่งด้วยค่าจากตารางอีกตารางหนึ่ง โดยจับคู่ด้วยคีย์ร่วม

ตัวอย่างการใช้งาน

สร้างตาราง 2 ตาราง มี Id ร่วมกัน:

mysql> create table DemoTable1 (Id int, Name varchar(10));
mysql> insert into DemoTable1 values(100,'Bob');

mysql> create table DemoTable2 (Id int, FirstName varchar(10));
mysql> insert into DemoTable2 values(100,'Adam');

ข้อมูลก่อนอัปเดต:

DemoTable1: Id=100, Name='Bob'
DemoTable2: Id=100, FirstName='Adam'

คำสั่งอัปเดต Name ใน DemoTable1 จาก FirstName ใน DemoTable2

mysql> update DemoTable1
    -> join DemoTable2 on DemoTable1.Id = DemoTable2.Id
    -> set DemoTable1.Name = DemoTable2.FirstName;

ผลลัพธ์หลังอัปเดต (Name กลายเป็น Adam)

+------+------+
| Id   | Name |
+------+------+
| 100  | Adam |
+------+------+

คำอธิบาย:

  • รูปแบบ: UPDATE table1 JOIN table2 ON table1.key = table2.key SET table1.col = table2.col
  • สามารถใช้ LEFT JOIN ได้ หากต้องการอัปเดตแม้ไม่มีคู่ใน table2 (จะเป็น NULL)
  • รองรับหลายตาราง: UPDATE t1 JOIN t2 ON ... JOIN t3 ON ... SET ...
  • MySQL รองรับ UPDATE JOIN ตรงตัว ไม่ต้องใช้ Subquery