>  기사  >  데이터 베이스  >  MySQL은 중복된 데이터를 삭제하고 가장 작은 ID를 유지합니다.

MySQL은 중복된 데이터를 삭제하고 가장 작은 ID를 유지합니다.

一个新手
一个新手원래의
2017-10-13 10:11:182037검색

인터넷에서 중복된 데이터를 찾아 삭제하고 가장 작은 ID의 데이터를 보관합니다. 방법은 다음과 같습니다.


DELETE
FROM
    people
WHERE
    peopleName IN (
        SELECT
            peopleName
        FROM
            people
        GROUP BY
            peopleName
        HAVING
            count(peopleName) > 1
    )
AND peopleId NOT IN (
    SELECT
        min(peopleId)
    FROM
        people
    GROUP BY
        peopleName
    HAVING
        count(peopleName) > 1
)

직접 사용할 경우에는


1 delete from tb where id in (SELECT max(id) from tb GROUP BY user HAVING count(user)>1)

[Err ] 1093 - FROM 절에서 업데이트 대상 테이블 'XXX'를 지정할 수 없습니다.

아직 원인을 모르겠습니다.

그런 다음 작업을 분산하는 방법을 찾고, 먼저 중복 사용자가 있는 데이터를 필터링한 다음 max()를 사용하여 더 큰 행을 선택합니다.

SELECT max(id) from tb GROUP BY user HAVING count(user)> ; 1

그런 다음 획득한 max(id)를 기준으로 중복 데이터를 하나씩 삭제합니다


1 delete from tb where id=xx

위 내용은 MySQL은 중복된 데이터를 삭제하고 가장 작은 ID를 유지합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.