문제는Oracle SQL - 외부 조인 테이블에서 어떻게 업데이트합니까?
내 SET가 외부 조인 된 테이블을 참조하는 업데이트 쿼리를 작성해야합니다.
SQL Server에서는이 작업을 매우 쉽게 수행 할 수 있지만 업데이트 쿼리에서 단일 테이블 만 허용하므로 Oracle에서 구문을 파악하는 데 시간이 많이 걸립니다.
나는 다음과 같은 오라클 쿼리 작성했습니다:
UPDATE SalesExt_tmp tmp
SET slsrep = (SELECT three_dig_rep
FROM dw_sls_rep_conv sls
WHERE sls.aims_rep = tmp.slsrep)
WHERE EXISTS (SELECT three_dig_rep
FROM dw_sls_rep_conv sls
WHERE sls.aims_rep = tmp.slsrep)
AND tmp.sysind = 'AIM';
이 교차을 담당하지만 dw_sls_rep_conv에 해당하는 일치가없는 SalesExt_tmp의 값 처리 할 필요가 (내가 case 문을 추가 할 계획을 null 값을 기본값으로 설정). 이렇게하려면 dw_sls_rep_conv를 외부 조인 된 테이블로 설정해야합니다. 그러나 이것이 내가 붙어있는 곳입니다.
SQL 서버 예 솔루션은 당신이 업데이트 쿼리에 여러 테이블을 가질 수있는 케이크 한 조각이 SQL 서버에서
:
UPDATE SalesExt_tmp tmp
LEFT JOIN dw_sls_rep_conv sls ON sls.aims_rep = tmp.slsrep
SET tmp.slsrep = sls.three_dig_rep
WHERE tmp.sysind = 'AIM';
하지만 수 없습니다의 삶에 대한 Oracle에서이 작업을 수행하는 방법을 알아 냈습니다. 이 쿼리는 내 slsrep 필드가 NULL로 설정되어이 작업이 허용되지 않을 수도 있음을 두려워하게한다는 것을 이해합니다.
질문
1) 우선 오라클이 가능하다? (이게 맞을거야?)
2)이 문제를 해결하려면 쿼리를 어떻게 다시 구성해야합니까? 내 EXISTS 절을 갈 필요가 내 짐작 해요 ...하지만 여전히 내 JOIN 배치 할 위치에 붙어 있어요.
이 오 와우 .... 그건 너무 쉽게했다! 이것은 정확히 내가하고 싶었던 ... 감사합니다! 나는 여전히 SQL Server와 Oracle Update Queries 사이의 로직 차이점에 대해 두뇌를 표현하려고 노력 중이다. 하지만 지금은 어떻게 작동하는지 .... 내 WHERE 조건은 업데이트 될 항목을 설정하고 내 SET는 업데이트 할 값을 정의합니다. 사이의 차이는 null로 설정됩니다. – DanK