Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จะอัปเดตข้อมูล MySQL เป็นกลุ่มด้วยแบบสอบถามเดียวได้อย่างไร


คุณสามารถอัปเดตข้อมูล MySQL เป็นกลุ่มได้ด้วยแบบสอบถามเดียวโดยใช้คำสั่ง CASE ไวยากรณ์มีดังนี้ −

update yourTableNameset yourUpdateColumnName =( Case yourConditionColumnName WHEN Value1 THEN ''UpdatedValue'WHEN Value2 then 'UpdatedValue'..NEND) where yourConditionColumnName IN(Value1,Value2,.....N);

เพื่อให้เข้าใจแนวคิดข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง UpdateAllDemo −> ( −> BookId int, −> BookName varchar(200) −> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.18 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามที่จะแทรกบันทึกมีดังนี้ -

mysql> แทรกลงในค่า UpdateAllDemo (1000,'Introduction to C'); Query OK, 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงในค่า UpdateAllDemo (1001,'Introduction to Java'); Query OK, 1 แถว ได้รับผลกระทบ (0.21 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก UpdateAllDemo;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+---------+----------------------+| รหัสหนังสือ | ชื่อหนังสือ |+---------+----------------------+| 1000 | บทนำสู่ C || 1001 | บทนำสู่ Java |+-------+----------------------+2 แถวในชุด (0.00 วินาที)

ตอนนี้เราจะทำการอัปเดตจำนวนมาก เช่น อัปเดต

  • ค่า 'Introduction to C' ด้วยค่า 'C in Depth' และ

  • ค่า 'Introduction to Java' ด้วยค่า 'Java in Depth'

คุณสามารถใช้คำสั่ง CASE สำหรับสิ่งนี้ดังที่แสดงด้านบน แบบสอบถามมีดังนี้ −

mysql> อัปเดต UpdateAllDemo −> ตั้งค่า BookName =(CASE BookId เมื่อ 1,000 แล้ว 'C ในความลึก' −> เมื่อ 1001 แล้ว 'Java ในเชิงลึก' −> END) −> โดยที่ BookId IN (1000,1001); แบบสอบถามตกลง , ได้รับผลกระทบ 2 แถว (0.24 วินาที)

ตอนนี้คุณสามารถตรวจสอบค่าที่ได้รับการอัปเดตในตารางหรือไม่ใช้คำสั่ง select

แบบสอบถามเพื่อตรวจสอบค่าที่ปรับปรุงในตารางมีดังนี้ −

mysql> เลือก *จาก UpdateAllDemo;

ต่อไปนี้เป็นผลลัพธ์ที่แสดงการอัปเดตจำนวนมากสำเร็จ -

<ก่อนหน้า>+---------+--------------+| รหัสหนังสือ | ชื่อหนังสือ |+---------+--------------+| 1000 | C ในความลึก || 1001 | Java in Depth |+--------+--------------+2 แถวในชุด (0.00 วินาที)