2012-09-07 8 views
1

열이 null이거나 값이 입력과 유사하지 않은 경우 테이블의 열을 업데이트해야한다는 요구 사항이 있습니다.조건에 따라 열을 업데이트하는 방법

단일 SQL 쿼리에서 수행 할 수 있습니까? 내 DB는 db2

나는 아래 하나 시도했지만, 거기에 변경 사항이 없다하더라도, 그것은 업데이 트됩니다. 나는 그다지 원하지 않아.

UPDATE ABC 
SET AG = CASE 
    WHEN AG IS NULL 
    OR AG <> 1000010 
    THEN 1000010 
    ELSE AG 
END, 
    P = CASE 
    WHEN P IS NULL 
    OR P <> 1235 
    THEN 1235 
    ELSE P 
END 
WHERE c = 607 
+2

죄송 합니다만 이것이 'UPDATE abc SET AG = 1000010, P = 1235'와 얼마나 다른가요? – raina77ow

+0

이미 값이있는 행을 업데이트하지 않으려는 이유가 있습니까? 데이터베이스 트리거 실행을 피하려고합니까? 어쨌든, 나는 두 가지 업데이트 진술이 아마도 갈 길이라고 생각한다. – mwolfetech

+0

또는 update_timestamp와 같은 다른 열을 업데이트 하시겠습니까? 어느 쪽이든, 나는 당신의 실제 문제를 더 잘 모델링하기 위해 SQL을 편집하는 것이 좋습니다. – mwolfetech

답변

1

WHERE 절에 조건을 옮겨보십시오 :

UPDATE ABC 
SET AG = 1000010 , 
    P = 1235 
WHERE c = 607 and 
     (AG IS NULL OR AG <> 1000010 or 
     P is NULL or P <> 1235 
    ) 

이 트리거에 대한 호출을 최소화해야한다.

관련 문제