MySQL update same column on multiple rows with different values

เนื่องด้วยหลายๆ ครั้ง จขกท. ได้มีความจำเป็นต้องแก้ไขข้อมูลผ่านฐานข้อมูลโดยตรง

การแก้ไขข้อมูลมีด้วยกันหลายกรณี รูปแบบพื้นฐานของการแก้ไขข้อมูล
สิ่งที่ต้องรู้คือ
1. ตำแหน่งที่จะแก้ไข
1.1 แก้ไข 1 แถว เช่น แก้ไขคอลัมน์ A ที่คอลัมน์ id = 100
1.2 แก้ไขหลายแถว เช่น แก้ไขคอลัมน์ A เมื่อคอลัมน์ A มีค่าเท่ากับ 100
2. ค่าที่ต้องการจะแก้ไขแทนค่าเดิม

คำสั่ง SQL รูปแบบทั่วไปได้แก่

UPDATE  [table] SET [column] = value WHERE [column] = value ;

โจทย์ที่ได้รับเมื่อมีการแก้ไขบ้อมูลคือ มีชุดของข้อมูลที่ต้องการเปลี่ยนแปลง กล่าวคือมีการเปลี่ยนแปลงข้อมูล ในคอลัมน์เดียวกันมากกว่า 1 ค่า
ตัวอย่างข้อมูลที่ใช้ ตาราง temp
tmp_fk 
รูปที่ 1 ข้อมูลตาราง temp ที่มีข้อมูลคอลัมน์ tmp_fk ไม่ซ้ำกัน
จากตัวอย่างข้อมูลข้างต้น ถ้าต้องการเปลี่ยนแปลงข้อมูลในคอลัมน์ ‘tmp_fk’ โดยมีเงื่อนไขดังต่อไปนี้
1. แก้ไขค่า 1 = 10
2. แก้ไขค่า 2 = 20
3. แก้ไขค่า 3 = 30

คำสั่ง SQL ที่ใช้สำหรับกรณีนี้คือ

UPDATE  temp
SET tmp_fk =
   CASE tmp_fk
      WHEN 1 THEN 10
      WHEN 2 THEN 20
      WHEN 3 THEN 30
   END 
WHERE 1=1 ;

ผลลัพย์ที่ได้คือ
tmp_fk_update_case 
รูปที่ 2 ข้อมูลตาราง temp คอลัมน์ tmp_fk ที่ถูกปรับแก้

 

Author : นายสิทธิชัย สมพันธุ์ (แบงค์)