본문 바로가기
MySql

MySQL 테이블에서 중복 행을 삭제하는 방법

by 베이스 공부 2020. 10. 11.
반응형

다음과 같은 MySQL 테이블이 있습니다.

ID, Col1, Col2, Col3, Col4, etc...

ID는 기본 키 이며 테이블 생성 이후로 작동하고 있습니다.

내가 원하는 것은 다른 모든 열이 동일한 레코드 하나를 제외하고 모두 삭제하는 것입니다.

 

해결 방법

 

DELETE DupRows.*
FROM MyTable AS DupRows
   INNER JOIN (
      SELECT MIN(ID) AS minId, col1, col2
      FROM MyTable
      GROUP BY col1, col2
      HAVING COUNT(*) > 1
   ) AS SaveRows ON SaveRows.col1 = DupRows.col1 AND SaveRows.col2 = DupRows.col2
      AND SaveRows.minId <> DupRows.ID;

물론 세 곳 모두에서 col1, col2를 모든 열로 확장해야합니다.

편집 : 내가 보관하고 다시 테스트 한 스크립트에서 이것을 꺼내서 MySQL에서 실행합니다.

 

참조 페이지 https://stackoverflow.com/questions/5770228

 

 

반응형

댓글