Update ค่าหลายๆแถว ที่มีค่าต่างๆกัน พร้อมๆกัน ใน MYSQL by

27
May
1

ปัญหา

ต้องการอัพเดต หลายๆแถวใน database ที่แต่ละแถวมีค่าต่างๆกันไป โดยใช้ Query เดียว

เพราะถ้าหากใช้แบบปกติ จะกินทรัพยากรสูงมากต่อการ update 1 ครั้ง

วิธีการ

สมมุติเราต้องการ update ค่า ( id => value) (1 => 3,2 => 4,3 => 5)  ลงใน table

ปกติเราจะต้องใช้ 3 query คือ


UPDATE mytable SET value = 3 WHERE id =1;

UPDATE mytable SET value = 4 WHERE id =2;

UPDATE mytable SET value = 5 WHERE id =3;

แต่หากใช้ CASE มาช่วยในการเขียน query Update จะออกมาเป็นแบบนี้

UPDATE mytable
SET value= CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END
WHERE id IN (1,2,3)

ซึ่งใช้เพียง 1 query เท่านั้น !

ถ้าหากต้องการ update หลายๆ field พร้อมกัน ก็สามารถทำได้โดย

UPDATE mytable
SET value1= CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END,
SET value2= CASE id
WHEN 1 THEN 7
WHEN 2 THEN 8
WHEN 3 THEN 9
END,
WHERE id IN (1,2,3)

Code ตัวอย่าง Php ดูได้จาก source

source :  http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/

Enjoy this article?

Consider subscribing to our RSS feed!

1 ความเห็น

  1. Mr.C
    13:12 on October 30th, 2010

    ขอบคุณมากครับ กำลังต้องการ

ใส่ความเห็น

RSS feed for comments on this post

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน