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

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


ในการลบรายการที่ซ้ำกันและปล่อยให้หนึ่งแถวในตาราง คุณต้องใช้แนวคิดของตารางชั่วคราว มีขั้นตอนดังนี้ −

สร้างตาราง anytemporaryTableName เป็นการเลือกที่แตกต่างกัน yourColumnName1, yourColumnName2 จาก yourTableName;ตัดทอนตาราง yourTableName;แทรกลงใน yourTableName(yourColumnName1, yourColumnName2) เลือก yourColumnName1, yourColumnName2 จาก yourtemporaryTableName;drop table your temporarypreTableName 

ให้เราสร้างตาราง -

mysql> สร้างตาราง demo39−> (−> user_id int,−> user_name varchar(20)−> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.74 วินาที)

แทรกระเบียนบางส่วนลงในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า demo39 (10,'John'); Query OK, 1 แถวได้รับผลกระทบ (0.19 วินาที)mysql> แทรกลงในค่า demo39 (10,'John'); Query OK, 1 แถวได้รับผลกระทบ (0.13 วินาที )mysql> แทรกลงในค่า demo39 (11, 'David'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า demo39 (11, 'David'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที)

แสดงบันทึกจากตารางโดยใช้คำสั่ง select -

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

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

<ก่อนหน้า>+---------+-----------+| user_id | ชื่อผู้ใช้ |+---------+-----------+| 10 | จอห์น || 10 | จอห์น || 11 | เดวิด || 11 | David |+---------+-----------+4 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อลบรายการที่ซ้ำกันและปล่อยให้หนึ่งแถวในตาราง -

mysql> สร้างตาราง temporaryTable เป็นเลือกเฉพาะ user_id, user_name จาก demo39; Query OK, 2 แถวได้รับผลกระทบ (1.39 วินาที) บันทึก:2 รายการซ้ำ:0 คำเตือน:0mysql> ตัดทอนตาราง demo39; Query OK, 0 แถวได้รับผลกระทบ (2.30 วินาที )mysql> แทรกลงใน demo39 (user_id, user_name) เลือก user_id, user_name จาก temporaryTable; Query OK, 2 แถวได้รับผลกระทบ (0.16 วินาที) บันทึก:2 รายการซ้ำ:0 คำเตือน:0mysql> drop table temporaryTable; Query OK, 0 แถวได้รับผลกระทบ (1.01) วินาที)

แสดงบันทึกจากตารางโดยใช้คำสั่ง select -

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

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

<ก่อนหน้า>+---------+-----------+| user_id | ชื่อผู้ใช้ |+---------+-----------+| 10 | จอห์น || 11 | David |+---------+-----------+2 แถวในชุด (0.00 วินาที)