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

จะหลีกเลี่ยงการแทรกแถวที่ซ้ำกันใน MySQL ได้อย่างไร


เพื่อหลีกเลี่ยงการแทรกแถวที่ซ้ำกันใน 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 วินาที)