728x90
반응형
문제 사항
원인 분석
기존에 있던 PK를 변경해야되서 삭제 후 다시 설정하려고했는데, 이런 에러가 났다.
검색해보니까 중복된 값이 존재해서라고 한다.
해결 방법
1. 직접..지우기
이거는 뭐.. 어쩔수가없다. 어떤 내용을 지워야되고 어떤걸 남겨야되는지는 사람이 판단해야 하기때문에..
PK속성을 가지고있던 컬럼들이 어떤게 중복되는지 봐야한다.
필요하다면 SELECT 문으로 뽑아내서 구별 한 뒤에 삭제하던지. 그렇게해야지.
다음은 중복되는 row를 삭제하는 쿼리다. 참고참고~
만약 기본키가 여러개라면 PARTITION BY 컬럼명 << 여기에 A, B, C, D .. 이런식으로 컬럼명 다 써주면됨
DELETE
FROM chocolate_table(테이블명)
WHERE ROWID IN
(
SELECT ROWID
FROM (
SELECT *
FROM (
SELECT Row_number() over(PARTITION BY 컬럼명 ORDER BY 컬럼명) AS num
FROM chocolate_table(같은 테이블 명) )
WHERE num > 1 -- num의 값이 1초과인 데이터들만 삭제
) );
참고
구독 및 하트는 정보 포스팅 제작에 큰 힘이됩니다♡
728x90
반응형
'Backend > DB' 카테고리의 다른 글
[ORACLE] TRUNC 함수 사용법 (3) | 2021.01.21 |
---|---|
[Oracle] ORA-01790: expression must have same datatype as corresponding expression (0) | 2020.12.07 |
[Oracle] date 타입 컬럼 String으로 가져오기 (0) | 2020.07.30 |
[DBeaver] 설치하기 및 DB연결 (0) | 2020.07.21 |
[에러] Oracle ORA-01747 열명을 올바르게 지정해 주십시오 (0) | 2020.07.20 |