LevelUp! Studio » update https://blog.levelup.in.th Experience the new world. Fri, 26 May 2017 10:06:07 +0000 th hourly 1 http://wordpress.org/?v=3.8.1 Update ค่าหลายๆแถว ที่มีค่าต่างๆกัน พร้อมๆกัน ใน MYSQL https://blog.levelup.in.th/2010/05/27/update-%e0%b8%84%e0%b9%88%e0%b8%b2%e0%b8%ab%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b9%86%e0%b9%81%e0%b8%96%e0%b8%a7-%e0%b8%97%e0%b8%b5%e0%b9%88%e0%b8%a1%e0%b8%b5%e0%b8%84%e0%b9%88%e0%b8%b2%e0%b8%95%e0%b9%88/ https://blog.levelup.in.th/2010/05/27/update-%e0%b8%84%e0%b9%88%e0%b8%b2%e0%b8%ab%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b9%86%e0%b9%81%e0%b8%96%e0%b8%a7-%e0%b8%97%e0%b8%b5%e0%b9%88%e0%b8%a1%e0%b8%b5%e0%b8%84%e0%b9%88%e0%b8%b2%e0%b8%95%e0%b9%88/#comments Thu, 27 May 2010 10:22:00 +0000 http://blog.levelup.in.th/?p=606 ปัญหา

ต้องการอัพเดต หลายๆแถวใน 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/

]]>
https://blog.levelup.in.th/2010/05/27/update-%e0%b8%84%e0%b9%88%e0%b8%b2%e0%b8%ab%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b9%86%e0%b9%81%e0%b8%96%e0%b8%a7-%e0%b8%97%e0%b8%b5%e0%b9%88%e0%b8%a1%e0%b8%b5%e0%b8%84%e0%b9%88%e0%b8%b2%e0%b8%95%e0%b9%88/feed/ 1