본문 바로가기

컴퓨터 이야기/Visual Studio

SQL 다중 행과 이중 쿼리 예제.

별 다른 이야긴 아니지만 늘 까먹을 것 때문에 이렇게 적어놓는 의미도 있네요. 암.

 

Update dbo.new

set dbo.new.number = (select number from dbo.old where dbo.old.word = dbo.new.word)

from dbo.new

 

위 구문이 old테이블과 new 테이블에서 특정 컬럼을 비교햐여 매치가 되는 값에 따라 old.number라는 컬럼의 다중 행의 값을 new 의 number라는 컬럼에 싹 넣는 것입니다.

 

이것이 제대로 된 쿼리인데, 오류를 범했던 것은 다음과 같습니다.

Update dbo.new

set dbo.new.number = (select (select number from dbo.old where dbo.old.word = dbo.new.word ) from dbo.new)

where dbo.new.word = (select (select word from dbo.old where dbo.old.word = dbo.new.word ) from dbo.new)

 

결국 위와 아래의 구문은 update구문에서 다중행을 처리할 때 한 번에 되게 하려면 form 절을 이중 쿼리 부분에 넣을 것이 아니라 update 쿼리 부분에 넣어야 하는 것입니다.

 

그렇지 않으면 =, <=, => 등등에 해당하는 에러를 만날 수 있습니다. (다중행이 처리가 안된다며)

 

위의 것으로 응용해서 해 보시길 바랍니다.

 

단순하게 생각했을 때는 from 절을 당연히 update칠 number를 뽑아오는 이중 쿼리 부분에 넣어야 되는 줄 알고 있었던 거죠.. :(