2012-10-11 3 views
2

Table1 테이블에서 Table2 테이블의 다중 열을 업데이트하려고합니다. 스테이징 테이블에는 널값이있을 수 있습니다. 난 그냥 NULL 값이 아닌 Table1 테이블에 값이있는 데이터를 업데이트하려고합니다.스테이징 테이블로 다중 열 업데이트 스테이징 테이블에서 널 값을 피함

그것은 표 1의 값이 null의 경우는 null 것이다 표 2의 값을 업데이트하지 말아야 출력

ID  col1  col2  col3 
3  test  xxxx  ffffff 
5  dddd  yyyyy  zzzzzz 

예컨대

Table 1        Table 2 
ID col11 col2  col3   ID1  col1  col2  col3 
3  test xxxx  (null)  3  (null) jjj  ffffff 
5  (null) yyyyy zzzzzz  5  dddd  (null)  lllllllll 

조언을 주시기 바랍니다.

내 접근 방식은 지금 열이 동일하거나 유사한 종류 여겨

UPDATE Table2 
SET (col1 ,col2,col3) 
     = (SELECT NVL(col1 ,col11), NVL(col2,col22), NVL(col3,col33) 
      FROM Test1 
      WHERE ID = ID1) 

답변

1

업데이트 준비 값의 COALESCE 각 열 및 기존 목표 값이다.

이 간단한 경우에는과 다를 수는 없지만 특히 이식성 및 더 복잡한 경우 성능에 대해 알고있는 가치가있는 숫자는 differences입니다.

각 열이 기술적으로 업데이트된다는 것은 낭비스러운 것처럼 보일 수도 있지만 그렇지 않습니다. 데이터베이스 행을 업데이트하면 비용이 발생합니다. 여러 가지 업데이트를 수행하는 동적 SQL을 사용하여 각 열의 조합에 대해 하나씩 훨씬 더 복잡한 쿼리를 만들 수 있지만 그 솔루션은 극적으로 느려지고 분명히 유지하기가 더 어려울 것입니다.

관련 문제