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

จะแทรกเฉพาะระเบียนที่ไม่มีอยู่ในตาราง MySQL ได้อย่างไร


เมื่อต้องการแทรกเมื่อไม่มีเร็กคอร์ด ให้ตั้งค่าคอลัมน์เป็น UNIQUE INDEX ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable ( Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(20) ); เคียวรีตกลง 0 แถวได้รับผลกระทบ (0.30 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างดัชนีเฉพาะเพื่อแทรกระเบียนที่ไม่มีอยู่ในคอลัมน์ 'ชื่อ' -

mysql> CREATE UNIQUE INDEX index_on_FirstName ON DemoTable(FirstName);Query OK, 0 แถวได้รับผลกระทบ (0.56 วินาที)ระเบียน:0 รายการซ้ำ:0 คำเตือน:0

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก ตอนนี้คุณสามารถตรวจสอบคำสั่ง insert แทรกเฉพาะระเบียนที่ไม่มีอยู่ -

mysql> แทรกลงในค่า DemoTable(FirstName) ('Chris') แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.07 วินาที) mysql> แทรกลงในค่า DemoTable (FirstName) ('Chris'); ข้อผิดพลาด 1062 (23000):ซ้ำกัน รายการ 'Chris' สำหรับคีย์ 'index_on_FirstName'mysql>mysql> แทรกลงในค่า DemoTable(FirstName) ('Robert'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.04 วินาที)mysql> แทรกลงในค่า DemoTable (FirstName) ('Mike');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.04 วินาที)mysql> แทรกลงในค่า DemoTable(FirstName) ('Robert');ข้อผิดพลาด 1062 (23000):รายการซ้ำ 'Robert' สำหรับคีย์ 'index_on_FirstName'mysql>

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

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+-----------+| รหัส | ชื่อจริง |+----+-----------+| 1 | คริส || 2 | โรเบิร์ต || 3 | Mike |+----+-----------+3 แถวในชุด (0.00 วินาที)