반응형
250x250
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 |
Tags
- or some instances in your deployment group are experiencing problems.
- chartjs
- Python
- SQL
- docker
- codepipeline
- Airflow
- Jenkins
- redis
- Flux
- Spring Error
- node
- AWS CI/CD 구축하기
- aws
- PostgreSQL
- java bigdecimal
- COALESCE
- codedeploy error
- bootstrap
- 도커
- codebuild
- aws cicd
- Spring
- codedeploy
- chart.js
- IntelliJ
- Kafka
- kubeflow
- JavaScript
- VPN
Archives
- Today
- Total
Small Asteroid Blog
[PostgreSQL] 중복 데이터 하나만 남기고 삭제하기 delete 본문
728x90
중복 데이터 확인
셀프 조인을 통해 중복된 행의 id값을 확인하는 방법이다.
id가 제일 작은 값으로 사용한다.
근데 아래와 같은 명령어를 사용하면 데이터가 중복되어 좀 더 많이 보이는 현상이 있긴하다.
schemas 에 본인이 사용하는 스키마 이름
tablename 에는 테이블 명을 입력해준다.
select s1.*
from schemas.tablename s1 join schemas.tablename s2
on s1.title = s2.title and s1.link = s2.link
where s1.id > s2.id;
중복 데이터 삭제하기
sql문으로 데이터 삭제하기에 대해 검색하면
row_number 를 사용해 partition by로 중복된 컬럼을 지정하고 row_num>1 을 설정해
삭제할 데이터만 가져오는 방법에 대해 많이 나와있다.
아래와 같은 방법을 사용할 수도 있다.
명령어를 수행하기 전에 select 문으로 확인해보고 delete문을 사용하길 추천한다.
-- SELECT * schemas.tablename
DELETE FROM schemas.tablename
WHERE id IN
(SELECT id
FROM (
SELECT id, ROW_NUMBER() OVER (PARTITION BY title, link) as row_num
FROM schemas.tablename
) tmp
WHERE row_num > 1);
나는 좀 더 짧은 명령어를 사용해 삭제하고 싶었다.
그래서 아래와 같이 delete 와 using 을 사용했다.
--select *
--from schemas.tablename s1, schemas.tablename s2
delete from schemas.tablename s1
using schemas.tablename s2
where s1.title = s2.title and s1.link = s2.link and s1.id > s2.id;
나는 개인적으로 밑에 방법이 더 좋은것 같다.
추가로 공식 홈페이지에서 delete에 대한 설명을 확인할 수 있다.
https://www.postgresql.org/docs/current/sql-delete.html
DELETE
DELETE DELETE — delete rows of a table Synopsis [ WITH [ RECURSIVE ] with_query [, ...] ] DELETE FROM …
www.postgresql.org
728x90
반응형
'백엔드 > DB' 카테고리의 다른 글
[mysql] Failed to determine a suitable driver class (0) | 2022.11.08 |
---|---|
MySQL EXPLAIN 실행 계획 보기 (쿼리 최적화 하기) (0) | 2022.08.19 |
postgresql 한글 포함 여부 확인하기 (0) | 2022.04.07 |
postgresql log 확인하기 (0) | 2022.04.06 |
DBeaver 에서 DB 데이터 내보내기 (0) | 2022.04.06 |