아래에 표시된 업데이트 구문이 잘 작동합니다. 하위 쿼리에서 with 문을 사용하여 성능을 크게 향상 시켰지만 어떤 이유로 인해 동일한 테이블에서 추가 열을 업데이트 할 수 없습니다.With 키워드를 사용하여 둘 이상의 열을 동시에 업데이트 할 수없는 이유는 무엇입니까?
작품 : 난 그냥이
UPDATE Table_A SET (Col_One, Col_Two) = (WITH OneValue AS (SELECT DISTINCT t.Col_One, T.Col_two
FROM Table_Two t, Table_A a
WHERE t.id = a.New_Id))
SELECT Col_One, Col_Two FROM OneValue);
처럼 table_two에서도 업데이트하는 또 다른 열을 포함하면된다 싶습니다하지만 난 ORA-01767 갱신 설정 표현해야 얻을 무엇
UPDATE Table_A SET (Col_One) = (WITH OneValue AS (SELECT DISTINCT t.Col_One
FROM Table_Two t, Table_A a
WHERE t.id = a.New_Id))
SELECT Col_One FROM OneValue);
부질의. 이 오류를 이해하지만 어떻게 생성하는지 보지 못합니다. 어떤 도움이라도 대단히 감사합니다.
미리 감사드립니다.
UPDATE Table_A SET (Col_One, Col_Two) = (select col_one, col_two from
(WITH OneValue AS (SELECT DISTINCT t.Col_One, T.Col_two
FROM Table_Two t, Table_A a
WHERE t.id = a.New_Id))
SELECT Col_One, Col_Two FROM OneValue)
);
서브 쿼리는 "함께"로 시작하는 경우가 작동하지 않는 이유에 관해서는, 나는 단지 그것을 상상할 수
성능에 하위 쿼리 인수 절이 도움이되는 이유는 없습니다. 차이점이 있는지 실행 계획을 확인하십시오. –
코딩에 익숙하지 않은 나는 매우 큰 테이블 인 테이블 2의 성능에 문제가 있다고 말할 때를 제외하고 올바르게 대답 할 수 있을지 확신 할 수 없습니다. 나는 주위를 둘러 보았고 askTom [link] (http://asktom.oracle.com/pls/asktom/f?p=100:11:0:::P11_QUESTION_ID:288016031632)을 통해 매우 유용한 업데이트 최적화 정보를 찾았습니다. 내 상황과 성능이 5 분 이상에서 10 초 미만으로 떨어졌습니다. – dee
+1 asktom을 살펴보기 위해 +1하지만 거기에 노출 된 철학을 따르지 않으므로 -1. 그가 성능 비교를 어떻게하는지보십시오. DBMS_Xplan을 사용하여 쿼리에 대한 실행 계획을 얻고 차이점을 확인하고 데이터 캐싱의 이점을 누리는 두 번째 쿼리를 확인하십시오. –