2017-01-05 2 views
0

두 개의 열 PK가있는 테이블이 있습니다. 나는 새로운 열, nid을 추가하고 싶다. 이것은 특정 ORDER BY를 기반으로 각 행 (1,2,3 ...)에 번호를 붙인다.모든 행의 번호 매기기

그래서 : Z의 ASC에 의해 번호

x | y | z 
3 7 2 
1 4 1 

가된다 :

x | y | z | nid 
3 7 2 | 2 
1 4 1 | 1 

내가 SQL (포스트 그레스 9.4)에서이 작업을 수행 할 수 있습니까? 만약 내가 제대로 이해하고

+1

가 무엇인지 경우? – GurV

+0

어느 특정 주문 하시겠습니까? – jarlh

+0

이 주문의 끝 부분 이외의 행을 추가 할 때 데이터베이스가 어떻게 동작해야합니까? 수를 1 씩 늘리려면이 순서로 모든 행을 더 업데이트해야합니까? 번거로운 것처럼 보입니다 ... 저는 DBA가 아니지만 요청에 따라이 번호 요청을 얻거나 필요할 때 계산하는보기를 만드는 것이 좋습니다. – Aaron

답변

2

, 당신은 단지 row_number() 사용할 수 있습니다 Z 열에서 중복

select x, y, z, row_number() over (order by z) as nid 
from t;