2013-11-22 2 views
1

다음 쿼리가 있습니다.UPDATE에서 중복 코드 제거

UPDATE A SET b = (SELECT b FROM B WHERE A.a_id = B.a_id AND B.value = ?) 

값이? 인 B에 a_id가 없으면 NULL 값으로 채울 수 있습니다. 하지만이 쿼리를 실행하기 전에 A.b에 NULL 값만 포함되어 있기 때문에 문제가되지 않습니다.

그러나 수행 된 업데이트 수를 반영하기 위해 업데이트 된 열 수가 필요합니다. 그래서 이것을 다음과 같이 변경했습니다 :

중복 된 코드가 있고 매개 변수를 여러 번 입력해야하므로이 솔루션이 마음에 들지 않습니다. where 절이 좀 더 복잡 해지면 이것은 더 추해집니다.

이 중복 코드를 없애는 방법이 있습니까?

은 (BTW 나는 오라클 (10)에있어,하지만 난 DB 독립적 인 솔루션을 선호)이이 특정 RDBMS에 허가되어 있지 않은 경우, 아마 당신은 수,

+0

'MERGE'문을보십시오. –

답변

1

UPDAT이 내부를 사용

UPDATE A 
INNER JOIN B ON A.a_id = B.a_id 
SET A.b = B.b 
WHERE B.value = ? 

가입 이전 값과 새 값을 별칭 테이블 식으로 선택하고이를 사용하여 업데이트합니다. Update statement with inner join on Oracle