푸른청년 푸르게 살고있나?  
home | 살아가기 | news | 세상보기 | tip&tech | 방명록 |  
   전체
   asp
   php
   jsp
   mssql
   mysql
   informix
   linux
   unix
   win2000
   javascript
   html
   oracle
   java
   etc
    
:: Tip&Tech > mssql
[mssql] 상관 부질의를 이용한 업데이트 문
부질의는 sql문안에 또하나의 sql문이 있다는걸 말한다.
상관 부질의는 그 또 하나의 sql문이 그 자체로 실행되면 에러가 나는 경우를 말한다.
업데이트 되는 필드에는 여러값이 들어갈수 없다.

위의 조건들을 염두에 두고 다음의 경우를 생각해보자.
titles 테이블에서 ytd_sales 라는 연간 총판매량을 입력하는 컬럼이 있다.
이 칼럼에 94년에 판매된 모든 수량을 업데이트 하고 싶으면
아래와 같이 생각할수 있다.

update titles
set ytd_sales = ytd_sales + (
select qty
from sales
where sales.title_id = titles.title_id
and ord_date between '1/1/94' and '12/31/94'
)

그러나 위와 같이 하면 에러가 난다. 이유는 업데이트될 필드는 여러값이 들어 갈수 없기 때문이다.
그러면 어떻게 해야 하나

update titles
set ytd_sales = (
select sum(qty)
from sales
where sales.title_id = titles.title_id
and ord_date between '1/1/94' and '12/31/94'
)

이렇게 하면 해당하는 제목에 대한 sales테이블의 수량을 모두 더하가 그 더한값을 한번만 해당하는 titles의 해당행에 더하므로 한행에 대해서는 한번만 update가 되는 것이다.

날짜: 2004-05-07 12:01:40, 조회수: 2355

다음글 CASE 와 COALESCE 사용하기
이전글 [MSSQL] 트랜잭션 고립수준을 변경하고 싶을때

꼬리말
글쓴이 비밀번호 #스팸글방지(주인장 닉네임을 쓰시오)

  
since by 2003.03.23 / 3th 2005.07.26 / 4th 2009.04.22 made by bluesoul