[PostgreSQL] DISTINCT ON

DataBase 2009. 6. 30. 09:50


2개의 테이블이 1:多 로 관계가 맺어져 있을 때, 중복을 제거하고자 할 경우 DISTINCT ON 을 사용하자.



아래의 예는 item과 item_layout 테이블끼리 idx값으로 join을 하고 순서는 item_layout 테이블의 order 필드로 하기 위한 예이다.
그냥 하면 되지만 item_layout 에 item.idx 값이 중복으로 들어가 있어 부득이하게 중복을 제거할 필요가 있어 아래의 Query를 사용했다.
(백수환님 고맙습니다.)

SELECT DISTINCT ON (idx) * FROM (SELECT a.*, b.order FROM item a, item_layout b WHERE a.idx=b.itemidx AND a.itemtype='I" ORDER BY b.order) v;




Posted by bloodguy
,