2012-03-02 44 views
6

Tôi đang cố gắng làm điều gì đó với bản ghi trùng lặp trong cơ sở dữ liệu mysql. tuy nhiên, tôi không muốn xóa các bản ghi và chỉ hai cột trùng lặp. Làm cách nào tôi có thể tìm thấy những bản ghi này?mysql chọn CHỈ bản ghi trùng lặp từ cơ sở dữ liệu

+0

http://stackoverflow.com/questions/854128/find-duplicate-records-in-mysql –

Trả lời

9

bạn có thể đăng thêm thông tin về cấu trúc bảng và ý bạn là một số trùng lặp nhưng chỉ có hai cột?

Dù sao, bạn có thể nhìn vào các GROUP BY, COUNT, và HAVING

SELECT `duped_field1`, `duped_field2`, COUNT(*) `tot` 
FROM `table` 
GROUP BY `duped_field1`, `duped_field2` 
HAVING `tot` > 1 
3

Nguyên tắc chung cho việc tìm kiếm các bản sao là chỉ cần sử dụng group byhaving count(*) > 1

Nếu bạn chỉ muốn biết cột trùng lặp giá trị:

select col1, col2 
from table 
group by col1, col2 
having count(*) > 1 

Nếu bạn muốn xem tất cả các lĩnh vực mà hai cột được nhân đôi:

select t.* 
from @tbl t 
where exists (select * 
       from @tbl d 
       where d.col1 = t.col1 and d.col2 = t.col2 
       group by d.col1 
       having COUNT(*) > 1) 
+0

hoặc chỉ cần thêm một '*' .. 'SELECT *, COUNT (*) tổng – Fabrizio

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