Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- Codeforces Round 831 (Div. 1 + Div. 2)
- iupc
- 앳코더
- 리버싱
- Graph Cost
- 2022
- django
- 레지스터
- Round 866
- 알고리즘 대회
- vue3
- 기본키 변경
- Hello 2023
- 코드포스
- E - Hanging Hearts
- idpiframe_initialization_failed
- 인하대 프로그래밍 경진대회
- 밑바닥부터 시작하는 딥러닝 1
- Div. 2
- 넥토리얼
- 카카오 로그인
- 1557
- expand item
- dart
- Flutter
- 카카오 API
- list_display
- Good Bye 2022: 2023 is NEAR
- shake!
- vue-google-login
Archives
- Today
- Total
pseong
[데이터 베이스] mul key 중복 제거 후 primary key로 바꾸기 본문
2초마다 주가 데이터를 가져오고 db를 업데이트 해주는데
오늘 보니까 테이블에 중복된 날짜가 엄청 많이 들어가 있었다.
엥? 왜 날짜를 키값으로 해서 데이터를 넣었는데 왜 업데이트가 안되고 계속 추가되었지?
라고 이유를 찾던 도중 키값이 mul로 되어있다.....;
그래서 검색해보니까 키가 중복될 수 있는 그런 기능이 mul이었다...
그래서 이 mul로 설정된 것을 pri로 바꿔야 하는데 한 가지 문제가 있었는데
바로 이미 중복된 값들이 어마어마하게 db에 들어갔다는 것.
삭제하고 다시 넣어봤자 파이썬의 dataframe to sql를 이용해서 넣기 때문에 어차피 mul로 들어가서 바꾸는 작업은 해줘야 한다.
그래서 mul를 pri로 바꾸기 전에 중복된 데이터를 삭제해야 하는데
중복된 데이터 삭제하는 쿼리문은 다음과 같다.
DELETE
FROM [테이블명]
WHERE [중복된 컬럼] IN
(
SELECT [중복된 컬럼] FROM (SELECT [중복된 컬럼] FROM [테이블명] GROUP BY [중복된 컬럼] HAVING count(*) > 1) tmp_table
);
중복된 컬럼을 group by 해서 tmp_table에 저장한다.
다시 tmp_table에서 [중복된 칼럼]을 뽑아서 기존 테이블에서 제거한다.
이렇게 해서 중복된 행을 지우고
ALTER TABLE [테이블명] ALTER PRIMARY KEY USING COLUMNS ([컬럼]);
이렇게 하면 mul 이 pri로 바뀐다.
참고로 중복된 바꾸려는 컬럼이 중복된 행을 가지고 있을 때 mul를 pri로 바꾸면 에러가 난다.
'백엔드' 카테고리의 다른 글
AWS CloudFront 사용하여 HTTPS 적용하기 (0) | 2023.04.23 |
---|---|
카카오 로그인 API 프론트 엔드로부터 인가코드 받아오기 (0) | 2022.07.19 |
Comments