본문 바로가기

DataBase

데이터 베이스 Primary Key 설정 하고 싶은데 중복 된 값 때문에 못할때 중복 값 제거하는 쿼리 Query

반응형

Mysql 기반입니다. 

우선 문제가 생길 수 있으니 항상 테이블을 복제 하여 테스트 해보고 적용하는 것은 기본입니다. 

테이블 구조와 데이터 복사

create table EV_STATION_API2 (select * from EV_STATION_API) 

create table EV_STATION_API2 as select * from EV_STATION_API

복제가 되었으면 쿼리를 테스트 해봅니다. 

EV_STATION_API 테이블에서 evId 열을 기준으로 중복된 행을 제거하려면 DELETE 문을 사용하여 JOIN 및 서브쿼리를 사용할 수 있습니다. 다음은 이 작업을 수행하는 SQL 쿼리입니다:

DELETE e1
FROM EV_STATION_API e1
JOIN (
    SELECT evId, MIN(no) AS min_no
    FROM EV_STATION_API
    GROUP BY evId
    HAVING COUNT(*) > 1
) e2 ON e1.evId = e2.evId AND e1.no > e2.min_no;

이 쿼리는 먼저 중복된 evId 값을 가지는 행을 식별하고 각각의 최소 no 값을 선택하는 서브쿼리를 생성합니다. 그런 다음 원본 테이블을 이 서브쿼리와 조인하여 no가 각 evId의 최소 no보다 큰 행을 삭제하여, 각 evId에 대해 하나의 행만 유지합니다.

반응형