>  기사  >  백엔드 개발  >  MySQL은 데이터 중복 제거를 구현합니다.

MySQL은 데이터 중복 제거를 구현합니다.

小云云
小云云원래의
2018-03-28 13:59:241945검색

이 문서에서는 주로 MySQL에서 중복 데이터를 삭제하는 방법을 공유합니다. 이 문서에서는 예제를 통해 설명하고 도움이 되기를 바랍니다.

FROM `ex` WHERE 전화를 삭제하고(SELECT c.phone
FROM `ex` as c
GROUP BY c.phone

HAVING COUNT( * ) >1) 및 ID가 없음(max(b. id) from `ex` as b group by b.phone);

참고: ex(예제 테이블 이름), 전화 필드를 기준으로 중복 여부를 확인합니다. 가장 최근에 삽입된 것(즉, 자동 증가 ID가 가장 큰 것)을 반복적으로 유지

그러나 실행 후 결과가 예상과 다릅니다:

/* SQL 오류(1093): 지정할 수 없습니다. FROM 절에서 업데이트할 대상 테이블 'ex' */

번역: 동일한 테이블에서 특정 값을 먼저 선택한 다음 (동일한 문에서) 테이블을 업데이트(삭제)할 수 없습니다. 특정 필드의 값을 기준으로 판단한 다음 특정 필드의 값을 업데이트합니다.

질문은 oracle, sql 서버 등을 제외한 mysql에만 해당됩니다. mysql의 하위 설명 지원이 그리 좋지 않기 때문입니다.

문제 해결 방법:


먼저 결과를 선택한 다음 중간 테이블을 통해 다시 선택하면 별칭이 있는 캐시된 테이블, 즉 가상 테이블이 됩니다. .

그림과 같이 MySQL SQL 문에서 중복된 정보를 삭제하는 문제를 해결합니다.

모든 사람의 편의를 위해:

DELETE  FROM   `ex`   WHERE  id NOT IN (  SELECT  id  FROM  (SELECT max(b.id) AS id  FROM `ex`  b  GROUP BY b.phone) b);

관련 권장 사항:

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

중복 데이터 삭제 sql 문

MySQL 삭제 데이터 행을 복제하고 저장합니다. 오직 하나

위 내용은 MySQL은 데이터 중복 제거를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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