2013-01-21 56 views
12

thể trùng lặp:
Find duplicate records in MySQLDanh sách MySQL Tất cả trùng lặp

Tôi có một bảng trong MySQL như thế này:

ID name email 
1 john  [email protected] 
2 johnny [email protected] 
3 jim  [email protected] 
4 Michael [email protected] 

Làm thế nào tôi có thể có các truy vấn MySQL rằng sẽ liệt kê ra một bản sao như thế này?

Kết quả tìm kiếm trùng lặp:

ID name email   Duplicate 
1 john  [email protected]  2 
2 johnny [email protected]  2 
+3

Câu hỏi chính xác này đã được trả lời: http://stackoverflow.com/questions/854128/find-duplicate-records-in-mysql –

Trả lời

25
SELECT a.*, b.totalCount AS Duplicate 
FROM tablename a 
     INNER JOIN 
     (
      SELECT email, COUNT(*) totalCount 
      FROM tableName 
      GROUP BY email 
     ) b ON a.email = b.email 
WHERE b.totalCount >= 2 

cho hiệu suất tốt hơn, thêm một INDEX trên cột EMail.

HOẶC

SELECT a.*, b.totalCount AS Duplicate 
FROM tablename a 
     INNER JOIN 
     (
      SELECT email, COUNT(*) totalCount 
      FROM tableName 
      GROUP BY email 
      HAVING COUNT(*) >= 2 
     ) b ON a.email = b.email 
+0

@JW im làm điều gì đó sai, hoặc bạn đã viết truy vấn quá phức tạp? Xem câu trả lời của tôi. – Kamil

+0

@Kamil kết quả truy vấn của bạn phải có hai bản ghi: 'ID 1 và 2'. –

+0

Tôi đoán bạn đã hiểu nhầm những gì tôi đang yêu cầu ở đây. Chỉ có một bảng và bảng dưới đây là kết quả từ truy vấn mySQL, không phải là một bảng khác trong cơ sở dữ liệu. – user1995781

0

Kiểm tra this post trên MySQL forums, mang đến cho những điều sau đây:

SELECT t1.id, t1.name, t1.email FROM t1 INNER JOIN ( 
SELECT colA,colB,COUNT(*) FROM t1 GROUP BY colA,colB HAVING COUNT(*)>1) as t2 
ON t1.email = t2.email; 
1

Nếu bạn có thể sống với có ID và tên trong danh sách được phân cách bằng dấu phẩy, sau đó bạn có thể thử:

select email, count(*) as numdups, 
     group_concat(id order by id), group_concat(name order by id) 
from t 
group by email 
having count(*) > 1 

Điều này tiết kiệm tham gia, mặc dù kết quả không có định dạng quan hệ.

Các vấn đề liên quan