ถ้าเราต้องมีการ update หรือ delete ข้อมูลในฐานข้อมูลคราวละหลาย record ด้วยเงื่อนไขบางอย่าง ถ้าเป็นไปได้ควรจะเขียนให้ทำงานได้ด้วยคำสั่ง SQL Command เดียว หากเงื่อนไขนั้นอยู่ในตารางที่ต้องการจะลบอยู่แล้ว SQL Command ก็จะตรงไปตรงมา อย่างเช่นคำสั่ง update ก็จะเป็นประมาณนี้
update table1 set field1=0, field2='a' where field3 is null
และการ delete
delete from table1 where field3 is null
แต่หากเราต้องการ update ตาราง table1 แต่ว่าเงื่อนไขเราอยู่ในตารางอื่น หรือแม้แต่ข้อมูลที่จะมา update อยู่ในตารางอื่น
ใน SQL Server เราสามารถใช้การ join เข้ามาช่วยใน sql ได้ดังนี้
update t1 set t1.field1=0, t1.field2=t2.field2 from table1 t1 inner join table2 t2 on t1.joinfield=t2.joinfield where t2.field3 is null
และการ delete
delete from t1 from table1 t1 inner join table2 t2 on t1.joinfield=t2.joinfield where t2.field3 is null
15/01/2010 at 14:54
ผมสงสัยว่าเป็น Standard SQL Syntax หรือว่าเฉพาะฐานข้อมูลครับ สอบถามไว้เป็นความรู้ครับ เพราะผมเองไม่เคยใช้
17/01/2010 at 15:22
เฉพาะ Microsoft SQL Server ครับ ผมไม่แน่ใจว่าของค่ายอื่นมีตัวไหนเขียนแบบนี้หรือเปล่า แต่ที่แน่ๆ Oracle เขียนแบบนี้ไม่ได้
23/12/2012 at 16:26
t1 t2 คืออะไรคับ
24/12/2012 at 02:16
เป็น alias ของ table เพื่อบอกว่าเรากำลังจัดการอยู่กับ alias นี้นะ ไม่ใช่ทั้งตาราง
จริงๆ จะตั้งชื่อว่าอย่างไรก็ได้ครับ
01/02/2018 at 11:05
คือ update ฟิล HH = จ่ายแล้ว และเงื่อนไข คือ ถ้า ฟิล a=1 ให้ UPDATE ฟิล aa=dog
แต่ถ้าฟิล a=2 ให้ update ฟิล aa=cat ต้องเขียน code update อย่างไรคะ แต่อยู่ใน tb เดียวกันค่ะ
01/02/2018 at 11:11
ใช้คำสั่ง case when then เข้าช่วยครับ
update tb set aa=(case a when 1 then ‘dog’ when 2 then ‘cat’ end) ….
01/02/2018 at 12:27
ขอบคุณค่ะ จะลองดูนะคะอาจารย์
01/02/2018 at 12:38
ไม่ได้ค่ะอาจารย์ ช่วยทีค่ะ
$sql=”UPDATE tb_book02 SET n7=’รับเรื่องแล้ว’,n8=(case ref2 when 1 then ‘น.ส.นิตยา เวฬุวนารักษ์’ when 2 then ‘น.ส.วิภาวี เทียนทอง’ end) WHERE id=$id”;
01/02/2018 at 12:39
ขอบคุณล่วงหน้าเลยค่ะ คริ คริ
01/02/2018 at 13:14
รบกวนด้วยค่ะ อาจารย์ พอดี คำสั่ง case when then เป็นครั้งแรกที่ได้ลองใช้ค่ะอาจารย์ ขอโปรดพิจารณาชี้แนะด้วยค่ะ
01/02/2018 at 13:41
ไม่ได้เป็นอาจารย์ครับ
syntax ใน sql ผิดเปล่าครับ WHERE id=$id ไม่น่าใช่
ต้องดู error message ครับ ว่ามันเตือนเรื่องอะไร
28/06/2019 at 11:58
UPDATE BOQ_DETAIL SET BOQ_ID = -159151 หมายความว่ายังไงครับ