2014-06-14 3 views
0

row_number() 함수에 대한 호출을 포함하는 SELECT 문이 있습니다. 이는 기술적으로 나에게 반환되는 행당 고유 ID를 제공합니다.postgresql에서 "row_number()"함수로 만든 열이있는 테이블을 정렬 할 수 있습니까?

SELECT f.*, row_number() as row_id OVER(ORDER BY f.name) 
FROM widgets f 

어떻게 든이 row_id를 사용하여 테이블을 정렬 할 수 있다면 멋지겠군요.

table.sort (MYTABLE, 기능 (A는, B) 반환 < b.row_id 끝을 a.row_id)

난 그냥 해요 : 지금과 같이 정렬 할 ROW_NUMBER를 사용하려고하고 싶습니다 고유 한 ID를 추가하고 정렬 할 때 결과를 반복해야하는 번거 로움을 피하려고하지만 어쩌면 정렬 할 수 없습니다.

+0

왜 'f.name'을 선택하고 결과 집합을 읽을 수 있습니까? –

답변

0

루아에서 어떻게 표현할 지 모르지만 Postgres에서는 열 별칭으로 주문할 수 있습니다. 포스트그레스 질의는 다음과 같습니다

SELECT f.*, row_number() OVER (ORDER BY f.name) as row_id 
FROM widgets f 
ORDER BY row_id; 

당신이 f.name으로 주문하고 싶지 않은 사실은 중복을 제안합니다. SQL에서의 순서가 안정적이라는 것은 아닙니다. 즉, 중복 된 이름이 다른 주문에있을 수 있습니다. 순서를 안정화하는 방법이 있다면 (즉, 각 행을 고유하게 식별하여) order by에있는 해당 열을 사용할 수 있습니다.