[Oracle] 멀 티 탭 관련 update 와 delete
다 중 표 관련 update
우선, 구조 테스트 표 와 데 이 터 는 다음 과 같다.
SYS@TEST16> create table testa as select owner,table_name,status from dba_tables;
Table created.
SYS@TEST16> create table testb as select owner,object_name,status from dba_objects;
Table created.
1) testa 표를 업데이트 하 는 status = 'VALID', 관련 조건 은 testa. owner = testb. owner and testa. tablename=testb.table_name update testa a set status='VALID'
where exists (select 1 from testb b where a.owner=b.owner and a.table_name=b.object_name);
2) testa 표를 업데이트 하 는 status 는 testb 표 의 status 와 같 고 관련 조건 은 같 습 니 다.update testa a
set a.status=(select b.status from testb b where a.owner=b.owner and a.table_name=b.object_name)
where exists (select 1 from testb b where a.owner=b.owner and a.table_name=b.object_name);
여기 서 주의해 야 할 것 은 한 개의 데이터 만 되 돌려 줄 때 상기 문 구 는 성공 적 으로 실 행 될 수 있 고 한 개의 데 이 터 를 넘 으 면 다음 과 같은 오류 가 발생 할 수 있 습 니 다.ORA-01427: single-row subquery returns more than one row
이때, 당신 은 하위 조회 의 반환 항목 수 를 한정 해 야 합 니 다. 예 를 들 어 rownum = 1 또는 distinct 등 방법 입 니 다.여기 where exists 문 구 는 생략 할 수 없습니다. 그렇지 않 으 면 update 전체 표!여기 조심 하 세 요.
실행 계획 을 보면 상기 update 문 구 는 testb 표를 두 번 스 캔 합 니 다. 이 표 가 크 면 성능 에 영향 을 줄 수 있 습 니 다. 한 번 만 스 캔 하려 면 다음 과 같은 방법 으로 대체 할 수 있 습 니 다.
update testa a
set a.status=nvl((select b.status from testb b where a.owner=b.owner and a.table_name=b.object_name),a.status);
update 자체 열 은 때때로 자신의 값 을 이용 하여 자신의 열 을 업데이트 해 야 할 수도 있 습 니 다. 예 를 들 어 표 test 의 열 col 1, col 2 에 빈 칸 이 있 습 니 다. 우 리 는 trim 에서 빈 칸 을 제거 해 야 합 니 다. 이때 우 리 는 rowid 를 이용 하여 업데이트 할 수 있 습 니 다. update 문 구 는 다음 과 같 습 니 다.
update test a
set (col1,col2)=
(select trim(b.col1),trim(b.col2) from test b
where a.rowid=b.rowid)
where exists
(select 1 from test b
where a.rowid=b.rowid)
다 중 표 관련 delete
1) in 또는 not in 을 이용 하여 데 이 터 를 삭제 합 니 다.
delete from testa where table_name
in (select object_name from testb);
2) exists 또는 not exists 를 이용 하여 데 이 터 를 삭제 합 니 다.delete from testb b
where exists
(select 1 from testa a where a.owner=b.owner and a.table_name=b.object_name)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.