행이 표 2에 존재할 때 표 1을 업데이트하는 여러 답변이 있지만 왼쪽 조인을 사용하여 표 2를 선택하면 작동하지 않습니다. 행 (더 나은 성능을 위해). 업데이트에 대한 해결책이 있지만 NOT IN을 사용할 때 성능이 크게 떨어집니다.오라클, 관련 행이 표 2에없는 경우 표 1의 업데이트 열
따라서이 SQL은 필요에 따라 테이블을 업데이트하지만 큰 테이블에 대해 실행하면 사용하기가 어렵습니다.
update header
set status='Z'
where status='A'
and header.id not in (
select headerid
from detail
where detail.id between 0 and 9999999
);
지금 나는 LEFT 올바른 ID를 반환 가입 사용 실적 쿼리를 가지고,하지만 난 같은 결과를 제공하기 위해 업데이트 문에 삽입 할 수 없었다.
ORA-01427 : 단일 행 부질 내가 실패 다음
update header set status = 'Z' where header.id = ( select header.id from header left join detail on detail.headerid = header.id where detail.headerid is null and header.status='A' )
: 나는에로 업데이트 문이를 사용하는 경우 SELECT 문은 그래서
select header.id from header left join detail on detail.headerid = header.id where detail.headerid is null and header.status='A'
입니다 둘 이상의 행을 반환합니다.
나는 ader.id가 반환되고 모든 행을 업데이트하려고합니다.
그래서 성능이 좋은 SQL select를 사용하여 테이블 헤더의 행을 반환하고 반환 된 행을 업데이트하는 솔루션을 찾고 있는데, 이는 세부 테이블의 관련 행이 없습니다.
도움을 주시면 감사하겠습니다. 그렇지 않으면 잘못 수행되는 업데이트가 남을 것입니다. 여러 헤더 ID &을 기대하고 있기 때문에 당신이이
Update
header
Set status = 'Z'
Where
header.id IN (select
header.id
From
header
Left join
detail
On
detail.headerid = header.id
Where
detail.headerid is null
And
header.status='A')