ใช้ 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 แล้วคำสั่งหลักดึงทุกรายการที่ชื่ออยู่ในรายการนั้น