나는 초보자라는 말로 시작하겠습니다. 두 테이블 (위치 및 자산)이 있습니다. 위치 테이블에는 fac_id/bldg/location_code/loc_id가 있고 자산 테이블에는 fac_id/bldg/location_code/loc_id가 있습니다. 자산 테이블에서 loc_id가 null 인 위치 테이블에서 loc_id로 자산 테이블 loc_id를 업데이트해야합니다. 그러나 올바른 loc_id를 업데이트하려면 fac_id/bldg/location_code를 두 테이블에서 일치시켜야합니다. 오류가 계속 발생하는 스크립트가 있습니다. 나는 인터넷 연구 (조인, 내부 조인, 병합, 존재하는 곳 등)에서 여러 가지 비틀기를 시도했지만 아무 것도 작동하지 않습니다. 이 원본 스크립트에서 너무 많은 행 오류가 발생하거나 단일 행 하위 쿼리가 둘 이상의 행을 반환합니다. 바라건대 해결책은 내가 모르는 단순한 무언가이다.고유 키가없는 다중 열을 사용하는 Oracle 업데이트
어떤 도움을 주셔서 감사 드리며, 머리가 벽에 부딪히지 않도록 머리가 아파요.
UPDATE asset b
SET b.loc_id = (SELECT DISTINCT l.fac_id, l.bldg, l.location_code, l.loc_id
FROM location l
WHERE upper(trim(b.fac_id))=upper(trim(l.fac_id))
AND upper(trim(b.bldg))=upper(trim(l.bldg))
AND upper(trim(b.location_code))=upper(trim(l.location_code))
)
WHERE b.loc_id IS NULL;
감사합니다!