INSERT ... ON DUPLICATE KEY UPDATE ทำงานในลักษณะที่หากพบคีย์หลักที่ไม่ซ้ำกันหรือซ้ำกัน ก็จะทำการ UPDATE UPDATE จะดำเนินการเฉพาะเมื่อมีค่าที่ซ้ำกันเกิดขึ้น
ให้เราสร้างตารางก่อน -
mysql> สร้างตาราง DemoTable733 ( StudentId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(100), StudentMarks int, UNIQUE KEY Un_Name (StudentName)); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.60 วินาที)
แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -
mysql> แทรกลงในค่า DemoTable733(StudentName,StudentMarks) ('John',45) ในการอัปเดตคีย์ที่ซ้ำกัน StudentMarks=86;การสืบค้นตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที)mysql> แทรกลงในค่า DemoTable733(StudentName,StudentMarks) ('Adam',65) ในการอัปเดตคีย์ซ้ำ StudentMarks =86; แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable733 (StudentName, StudentMarks) ('Carol', 75) ในการอัปเดตคีย์ที่ซ้ำกัน StudentMarks =86;แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.08 วินาที)mysql> แทรกลงใน DemoTable733(StudentName,StudentMarks) ค่า ('John',45) ON DUPLICATE KEY UPDATE StudentMarks=86;Query OK, 2 แถวได้รับผลกระทบ (0.12 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -
mysql> เลือก *จาก DemoTable733;
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
<ก่อนหน้า>+-----------+-------------+--------------+| รหัสนักศึกษา | ชื่อนักเรียน | StudentMarks |+-----------+-------------+------------+| 1 | จอห์น | 86 || 2 | อดัม | 65 || 3 | แครอล | 75 |+-----------+-------------+--------------+3 แถวในชุด (0.00 วินาที)