หน้าแรก/บทความ/คำสั่ง SQL ให้ Update โดยดึงข้อมูลจากฟิลด์อีกตารางมาใส่
กลับหน้าบทความ
🗄️Database

คำสั่ง SQL ให้ Update โดยดึงข้อมูลจากฟิลด์อีกตารางมาใส่

วิธีใช้คำสั่ง SQL UPDATE ร่วมกับ SELECT subquery เพื่อดึงข้อมูลจากอีกตารางนึงมาอัปเดตลงในตารางปัจจุบัน โดยไม่ต้องกรอกด้วยมือทีละแถว

ศิริชัย ธีรภัทรสกุล (ตั้ม)อ่าน 3 นาที9 กรกฎาคม 2558
#SQL#MySQL#UPDATE#SELECT#Subquery#Database

บางครั้งเราอาจจะเจองานที่ต้องมีการดึงฟิลด์บางฟิลด์ของอีกตารางหนึ่งมาใส่อีกตารางหนึ่ง แต่ถ้าข้อมูลมีปริมาณมากคงไม่สามารถมานั่งกรอกด้วยมือเองได้

ตัวอย่างสถานการณ์

มี 2 ตาราง:

  • employee — เก็บข้อมูลพนักงาน: emp_id, name, pos_id
  • position — เก็บข้อมูลตำแหน่ง: pos_id, name, emp_count

เราต้องการอัปเดตฟิลด์ emp_count ในตาราง position ให้มีจำนวนพนักงานในแต่ละตำแหน่ง

Step 1: นับจำนวนพนักงานแต่ละตำแหน่ง

SELECT pos_id, COUNT(*) AS emp_count
FROM employee
GROUP BY pos_id

Step 2: UPDATE โดยใช้ข้อมูลจาก SELECT

UPDATE position pos,
(SELECT pos_id, COUNT(*) AS emp_count FROM employee GROUP BY pos_id) AS emp
SET pos.emp_count = emp.emp_count
WHERE pos.pos_id = emp.pos_id

อธิบายคำสั่ง

  • บรรทัดที่ 1: อัปเดตตาราง position ตั้งชื่อย่อเป็น pos
  • บรรทัดที่ 2: ใส่ subquery นับจำนวนพนักงานตั้งชื่อย่อตารางเป็น emp
  • บรรทัดที่ 3: นำ emp.emp_count มาอัปเดตใส่ใน pos.emp_count
  • บรรทัดที่ 4: กำหนดเงื่อนไขให้อัปเดตเฉพาะรหัสตำแหน่งที่ตรงกัน

🚀 รับพัฒนาเว็บไซต์ & เว็บแอพพลิเคชั่น

สนใจดูตัวอย่างงานหรือสอบถามเพิ่มเติม ติดต่อได้เลยครับ โค้ดโมทีฟ (CodeMotive)