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

ค้นหาและแสดงข้อมูลซ้ำ (Duplicate Records) ใน MySQL


ใช้ Subquery ด้วย GROUP BY ... HAVING COUNT(*) > 1 เพื่อหาค่าที่ซ้ำ แล้ว IN เพื่อดึงแถวทั้งหมดที่มีค่านั้น

สร้างตาราง DuplicateFound (ID, Name, Location) และเพิ่มข้อมูล 5 แถว (US 3 แถว, UK 2 แถว)

แสดงแถวทั้งหมดที่ Location ซ้ำ (มีมากกว่า 1)

SELECT * FROM DuplicateFound
WHERE location IN (SELECT location FROM DuplicateFound GROUP BY location HAVING COUNT(location) > 1)
ORDER BY location;

ผลลัพธ์: แสดง 5 แถว จัดกลุ่ม UK ก่อน แล้ว US

แสดงเฉพาะค่าที่ซ้ำ (Distinct duplicate values)

SELECT Name, location FROM DuplicateFound GROUP BY location HAVING COUNT(location) > 1;

ผลลัพธ์: แสดงตัวแทน 1 ชื่อต่อ Location ที่ซ้ำ (John สำหรับ US, Bob สำหรับ UK)

ประยุกต์: ลบข้อมูลซ้ำ, ทำความสะอาดข้อมูล, รายงานค่าซ้ำ