2011-11-18 3 views
0

내 요구 사항
선택 쿼리를 사용하지 않고 동일한 테이블에서 테이블 값을 업데이트 이 쿼리는 행에 영향을주지 않습니다. 내 목표 : Update val2 of #table where slno=1 with the value of val2 of slno=2 이 방법선택 쿼리를 사용하지 않고 동일한 테이블에서 테이블 값 업데이트

Declare @val2 nvarchar(50) 
    select @val2=val2 from #table where slno=2 
    update #table set [email protected] where slno=1 


    create table #table 
    (
    slno int identity(1,1), 
    val nvarchar(50), 
    val2 nvarchar(50) 
    ) 

    insert into #table(val,val2)values('1',newID()) 
    insert into #table(val,val2)values('1',newID()) 
    insert into #table(val,val2)values('1',newID()) 

    select * from #table 

    update #table set val2=T.val2 
     from #table T where slno=1 and T.slno=2 



     drop table #table 

나는 테이블의 레코드 많이 가지고 일을하지 않고 다른 방법이 있나요. 그래서 선택하고 업데이트하면 성능에 영향을 미칠 수 있습니다.

답변

0

자세한 정보를 제공해주십시오.

테이블에 2 행만 있습니까?

왜 이런 종류의 업데이트가 필요합니까?

당신의 DB 구조가 잘못되었다고 생각하지만, 당신이 왜 이것을 필요로하는지 설명 할 때까지 정확히 말할 수는 없습니다.

어쨌든 select를 사용하지 않으면이 작업을 수행 할 수있는 방법이 좋지 않을 수 있습니다. 당신은 테이블에 스스로 참여할 수 있습니다. 추가 칼럼을 갖는 것이 더 나을 것입니다. 그러나 가지고 있지 않다면 어떻게해야합니까?

UPDATE T1 
    SET T1.val2 = T2.val2 
    FROM #table T1 INNER JOIN #table T2 
     ON T1.slno = 1 AND T2.slno = 2 
관련 문제