เพื่อหลีกเลี่ยงการแทรกแถวที่ซ้ำกันใน MySQL คุณสามารถใช้ UNIQUE() ไวยากรณ์มีดังนี้ −
เปลี่ยนตาราง yourTableName ADD UNIQUE(yourColumnName1,yourColumnName2,...N);
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง
แบบสอบถามเพื่อสร้างตารางมีดังนี้ −
mysql> สร้างตาราง avoidInsertingDuplicateRows -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> FirstValue int, -> SecondValue int -> ); สืบค้นตกลง 0 แถวได้รับผลกระทบ (0.53 วินาที)
ตอนนี้ตรวจสอบคำอธิบายของตารางโดยใช้คำสั่ง desc
แบบสอบถามมีดังนี้ −
mysql> หลีกเลี่ยงInsertingDuplicateRows;
ตัวอย่าง ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+-------------+---------+------+----+--------- +----------------+| สนาม | พิมพ์ | Null | คีย์ | ค่าเริ่มต้น | พิเศษ |+-------------+---------+------+ -----+---------+ -----------------+| รหัส | int(11) | ไม่ | PRI | NULL | auto_increment || FirstValue | int(11) | ใช่ | | NULL | || SecondValue | int(11) | ใช่ | | NULL | |+-------------+---------+------+----+---------+- ---------------+3 แถวในชุด (0.00 วินาที)นี่คือแบบสอบถามเพื่อหลีกเลี่ยงการแทรกแถวที่ซ้ำกันใน MySQL เราจะตั้งค่าด้วยคำสั่ง insert เพื่อแทรกเรคคอร์ดในตาราง -
mysql> แทรกลงในค่า forgetInsertingDuplicateRows(FirstValue,SecondValue) (10,20) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที)mysql> แทรกลงในค่าหลีกเลี่ยงInsertingDuplicateRows (FirstValue,SecondValue) (10,20); ข้อผิดพลาด 1062 ( 23000):รายการซ้ำ '10-20' สำหรับคีย์ 'FirstValue'
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select
แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก avoidInsertingDuplicateRows;
นี่คือผลลัพธ์ -
<ก่อนหน้า>+----+-----------+-------------+| รหัส | FirstValue | SecondValue |+----+-----------+-----------+| 1 | 10 | 20 |+----+------------+-------------------- +1 แถวในชุด (0.00 วินาที)