본문 바로가기

[SQL] Postgres에서 중복도 제거하고 다른 컬럼 기준으로 정렬하기(DISTINCT, ORDER BY, subquery

ironwhale 2021. 11. 6.

SQL(Postgres)로 해보기

//Postgres 

SELECT * 
FROM ( SELECT DISTINCT ON (중복을 제거할 컬럼명) * FROM 테이블명 WHERE name='a') as foo 
ORDER BY id DESC; // 정렬할 컬럼

 

python SQLAlchemy로 해보기

from sqlalchemy import desc 

// 중복을 제거한 서브커리를 생성한다.
sub_images = db.query(테이블명).distinct(테이블명.컬럼명).filter(테이블명.컬럼명==컬럼에서찾을내용).subquery() 

// 서브커리를 ORDER BY로 정렬한다. 
tests = db.query(sub_images).order_by(desc("id")).all()

SQLAlchemy에서 서브커리를 생성한 뒤 서브커리를 다시 order_by를 할때는 'id' 이런식으로 문자열을 넣어줘야 작동이 됩니다. sub_images.id 이런식으로는 에러 메세지가 나옵니다.

 

 

 

 

댓글