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

นับรายการที่ซ้ำกันในตาราง MySQL?


คุณสามารถใช้ if() จาก MySQL เพื่อนับบันทึกที่ซ้ำกัน ไวยากรณ์มีดังนี้ −

เลือก yourColumnName, COUNT(*) AS anyVariableName, IF ( COUNT(*)>1,"Duplicate Records", "Not Duplicate records") เป็น anyVariableName FROM yourTableName group โดย yourColumnName;

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

mysql> สร้างตาราง DuplicateRecords -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> Name varchar(30), -> PRIMARY KEY(Id) -> );Query OK, 0 แถวได้รับผลกระทบ (0.82 วินาที) 

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

mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.81 วินาที) mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.17 วินาที) mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('แซม'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.17 วินาที) mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('แซม'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('แซม'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.20 วินาที)mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.14 วินาที) mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที) mysql> แทรกลงในค่า DuplicateRecords (ชื่อ) ('ไมค์'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.14 วินาที)

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

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

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

<ก่อนหน้า>+----+-------+| รหัส | ชื่อ |+---+-------+| 1 | แครอล || 2 | จอห์น || 3 | แซม || 4 | จอห์น || 5 | แซม || 6 | แซม || 7 | จอห์น || 8 | แครอล || 9 | แครอล || 10 | Mike |+----+-------+10 แถวในชุด (0.00 วินาที)

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

mysql> SELECT Name, COUNT(*) AS Repetition, IF (COUNT(*)>1,"Duplicate Records", "Not Duplicate records") เป็น IsDuplicateRecordsOrNot -> จากกลุ่ม DuplicateRecords ตามชื่อ;

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

<ก่อนหน้า>+-------+-----------+------------------------- +| ชื่อ | ซ้ำซ้อน | IsDuplicateRecordsOrNot |+-------+------------+-----------------------------------+ | แครอล | 3 | บันทึกซ้ำ || จอห์น | 3 | บันทึกซ้ำ || แซม | 3 | บันทึกซ้ำ || ไมค์ | 1 | ไม่ซ้ำบันทึก |+-------+-----------+----------------------- -+4 แถวในชุด (0.00 วินาที)