2010-07-03 2 views
3

테이블의 각 행의 일부 열을 고유 한 값으로 설정하는 방법이 있습니까? SQL 서버 2000 에 SQL (안 T/SQL)를 사용하여SQL Server에서 열의 각 행에 고유 ID를 설정하는 방법

update mytable set myCol=rownum() 

나는 스키마를 건드릴 수 없어하지만 난 여분의 열 또는 두 가지를 않습니다.

+0

? 그렇다면 어떤 언어입니까? –

+0

테이블에 대해 DML SQL을 실행하려고합니다. 식별자 열이나 그와 비슷한 것을 추가 할 수 없습니다. – mikemay

+0

기존의 고유 한 열이 있습니까? "예비"열은 어떤 유형입니까? – Oded

답변

7

기본 키가있는 경우 행을 계산하여 고유 값을 생성 할 수 있습니다. 예를 들어 (테이블의 이름으로 #t 대체) :

update t 
set  t.col1 = (select COUNT(*) from #t t2 where t.pk >= t2.pk) 
from #t t 

을 당신이 varchar(36) 이상이있는 경우, 생성 할 수 있습니다 고유성을 보장받을 수 있습니다 GUID의 :

update #t 
set  col1 = NEWID() 

당신이 둘 다없는 경우, 변수를 사용할 수 있습니다. 이 기술은 기반이 설정되어 있지 있기 때문에 눈살을 찌푸리게하지만, 꽤 잘 작동 : 스키마를 만지지 수 있기 때문에, 당신은 코드에서이 일을하는

declare @i int 
set @i = 1 

update #t 
set  col1 = @i 
,  @i = @i + 1 
관련 문제