2017-01-20 1 views
1

ROW_NUMBER()을 사용하여 열을 업데이트하려고하는데 가끔씩 만 작동합니다. 무엇이 잘못 되었습니까? 난 단지 실행하면 다음ROW_NUMBER을 (를) 사용하여 열을 업데이트하십시오.

update temp1 set temp1.RowNumber = m.RowID 
from 
(
    select ROW_NUMBER() OVER (ORDER BY t.id_pv) as 'RowID', id_pv 
    from temp1 t 
) m 
where temp1.id_pv = m.id_pv 

전에 업데이트

enter image description here

후 테이블의 두 개의 열이 있습니다 :

select ROW_NUMBER() OVER (ORDER BY t.id_pv) as 'RowID', id_pv from temp1 t 

가 마법처럼 작동이 명령어입니다. 아이디어?

+0

'id_pv'고유 한가요? 그것은 스크린 샷에서 나오는 것처럼 보이지 않습니다. –

+0

아니요, 그렇지 않습니다. 이 필드는 클라이언트의 식별자입니다. 실제로 테이블에는 약 40 개의 필드가 있습니다. 그러나 어떤 경우에는 작동합니다. 필요한 것은 id_pv 필드를 고려하여 순차 번호 (업데이트 명령 포함)를 추가하는 것입니다. –

답변

1

id_pv이 고유하지 않은 경우 안정적인 결과가 생성되지 않습니다. 정렬을 안정화하기 위해 ORDER BY 절에 고유 한 다른 열을 추가해야 할 수도 있습니다. 그것은 반복적 인 결과를 가져와야합니다.

+0

다른 열을 찾으려고합니다. 이것을 할 또 다른 방법이 있습니까? –

+0

내가 아는 것은 아닙니다. 그러나 내가 처음 알지 못했을 것입니다. 다른 열 자체는 고유 할 필요는 없지만 그 쌍은 고유합니다. –

관련 문제