2016-06-20 3 views
0

저는 a와 b가 두 개의 열로 구성된 테이블을 가지고 있는데, a는 ID이고 b는 타임 스탬프입니다. 별개의 a를 모두 선택해야하지만 ID 당 가장 최신 행만 신경 씁니다.포스트그레스는 타임 스탬프에 따라 고유 한 것을 선택합니다.

e.e. b 값에 대해 뚜렷한 a 조건을 선택하는 방법이 필요합니다.

포스트 그레스에서 DISTINCT ON을 사용하는 방법이 있습니까?

건배

@a_horse_with_no_name 알처럼
+3

'바이 the_table 주문 (a) A, B, B의 구별에 desc' 선택? –

+0

가장 최근의 것 :'select * from ztable t 존재하지 않는 곳 (select * from ztable x where x.a = t.a and x.b> t.b); ' – joop

+0

a_horse_with_no_name - 주문은 DISTINCT 전후에 적용됩니까? @ joop 어떻게 작동하는지 설명해 주시겠습니까? 받아 들일 수있는 것으로 표시해 드리겠습니다. – JMzance

답변

3

,이 솔루션은

SELECT DISTINCT ON (a) a, b FROM the_table ORDER BY a, b DESC 

the manual가 말했듯이, 세트의 "첫 번째 행"쿼리 하지 않는 예측할 수 있음을

주입니다 는 행의 고유 한 순서를 보장하기에 충분한 열로 정렬되어 은 DISTINCT 필터에 도착합니다. (DISTINCT ON 처리 ORDER BY 정렬 한 후에 발생한다.)

관련 문제