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

วิธีค้นหาข้อมูลซ้ำทั้งหมดใน MySQL

ใช้ Subquery ร่วมกับ GROUP BY และ HAVING COUNT(*) > 1 เพื่อหาค่าที่ซ้ำกัน

สร้างตารางตัวอย่าง

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name VARCHAR(100)
    -> );

เพิ่มข้อมูลตัวอย่าง

mysql> INSERT INTO DemoTable(Name) VALUES('John');
mysql> INSERT INTO DemoTable(Name) VALUES('Chris');
mysql> INSERT INTO DemoTable(Name) VALUES('John');
mysql> INSERT INTO DemoTable(Name) VALUES('David');
mysql> INSERT INTO DemoTable(Name) VALUES('Bob');
mysql> INSERT INTO DemoTable(Name) VALUES('Chris');
mysql> INSERT INTO DemoTable(Name) VALUES('Mike');
mysql> INSERT INTO DemoTable(Name) VALUES('Robert');
mysql> INSERT INTO DemoTable(Name) VALUES('Mike');

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+----+--------+
| Id | Name   |
+----+--------+
| 1  | John   |
| 2  | Chris  |
| 3  | John   |
| 4  | David  |
| 5  | Bob    |
| 6  | Chris  |
| 7  | Mike   |
| 8  | Robert |
| 9  | Mike   |
+----+--------+

คำสั่งค้นหาข้อมูลซ้ำทั้งหมด

mysql> SELECT * FROM DemoTable
    -> WHERE Name IN (
    ->   SELECT Name FROM DemoTable
    ->   GROUP BY Name
    ->   HAVING COUNT(*) > 1
    -> );

ผลลัพธ์ (แสดงเฉพาะ John, Chris, Mike ที่ซ้ำกัน):

+----+-------+
| Id | Name  |
+----+-------+
| 1  | John  |
| 2  | Chris |
| 3  | John  |
| 6  | Chris |
| 7  | Mike  |
| 9  | Mike  |
+----+-------+

คำอธิบาย: Subquery หาชื่อที่มี COUNT > 1 แล้วคำสั่งหลักดึงทุกรายการที่ชื่ออยู่ในรายการนั้น