Update ค่าหลายๆแถว ที่มีค่าต่างๆกัน พร้อมๆกัน ใน MYSQL by plug.in
27
May1
May1
ปัญหา
ต้องการอัพเดต หลายๆแถวใน 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)
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)
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!
13:12 on October 30th, 2010
ขอบคุณมากครับ กำลังต้องการ