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

จะตรวจสอบรายการซ้ำในตาราง MySQL ในหลายคอลัมน์ได้อย่างไร


ในการตรวจสอบรายการที่ซ้ำกันใน MySQL คุณสามารถใช้กลุ่มโดยมีอนุประโยค ไวยากรณ์มีดังนี้

เลือก yourColumnName1,yourColumnName2,......N,count(*) เป็น anyVariableName จาก yourTableNamegroup โดย yourColumnName1,yourColumnName2การนับ (*)> 1;

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้

mysql> สร้างตาราง DuplicateDemo-> (-> StudentId int ไม่เป็น null,-> StudentFirstName varchar(100),-> StudentLastName varchar(100),-> Primary Key(StudentId)-> );Query OK, 0 แถว ได้รับผลกระทบ (0.50 วินาที)

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

mysql> แทรกลงในค่า DuplicateDemo (1,'John','Smith');Query OK, 1 แถวได้รับผลกระทบ (0.13 วินาที)mysql> แทรกลงในค่า DuplicateDemo (2,'Mike','Jones'); แบบสอบถาม ตกลง ได้รับผลกระทบ 1 แถว (0.28 วินาที)mysql> แทรกลงในค่า DuplicateDemo (3,'David','Smith'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงในค่า DuplicateDemo (4,'Carol', 'Taylor'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า DuplicateDemo (5, 'David', 'Smith'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า DuplicateDemo ( 6,'John','Smith');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> แทรกลงในค่า DuplicateDemo (7,'John','Taylor');Query OK, 1 แถวได้รับผลกระทบ (0.15 วินาที)

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

แบบสอบถามมีดังนี้ -

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

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-----------+-----------+-------------- ---+| รหัสนักศึกษา | StudentFirstName | StudentLastName |+-----------+-----------------+---------------- -+| 1 | จอห์น | สมิธ || 2 | ไมค์ | โจนส์ || 3 | เดวิด | สมิธ || 4 | แครอล | เทย์เลอร์ || 5 | เดวิด | สมิธ || 6 | จอห์น | สมิธ || 7 | จอห์น | เทย์เลอร์ |+-----------+--------------------------------+---------------- -+7 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อตรวจสอบรายการที่ซ้ำกันจากตาราง

mysql> เลือก StudentFirstName,StudentLastName,count(*) เป็น Total จาก DuplicateDemo-> group โดย StudentFirstName,StudentLastName-> มี count(*)> 1;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+---------------------------------------------------------+-------+| StudentFirstName | นักเรียนนามสกุล | รวม |+-----------------+-----------------+-------+| จอห์น | สมิ ธ | 2 || เดวิด | สมิ ธ | 2 |+-------------------+--------------------------------------+2 แถว ในชุด (0.00 วินาที)