2011-02-01 2 views
2

데이터베이스에 동일한 "전자 메일"이있는 다중/중복 레코드가있는 데이터베이스가 있습니다 (기본 상태로 단일 행을 남기고 싶습니다. 0)를 갱신하고 나머지 복제에 대해서는 "status = 5"를 갱신하십시오. 모든 레코드가 중복되는 것은 아닙니다. 전자 메일 주소는 base64로 인코딩되어 저장됩니다.PHP/MySQL - 중복 항목이있는 행을 업데이트하십시오.

+0

각 행마다 고유 한 열이 있습니까? 기본 키처럼? –

+0

네, ID는 autoincrement입니다 – Michael

답변

9
UPDATE tbl 
JOIN (
    SELECT email, MIN(ID) minID 
    FROM tbl 
    GROUP BY email 
    HAVING COUNT(*) > 1) t2 ON tbl.email = t2.email AND tbl.id != t2.minID 
SET tbl.status = 5 
+0

ok .. 쿼리를 실행 .. 어떤 생각이 얼마나 많은 시간이 3 밀리를 업데이 트하는 데 걸릴 수 있습니다. 기록? – Michael

+1

@michael'email'에 색인이 있습니까? loong time –

+0

에 대한 색인이 없다면 ... – Michael

관련 문제