0
동일한 테이블에서 여러 열을 업데이트해야합니다. 그러나 업데이트해야하는 값은 다른 테이블에서 가져옵니다. 현재 업데이트 문을 구분했습니다. 문제는 많은 업데이트 문을 업데이트하고 실행하는 열이 많아서 많은 수의 잠금 및 성능 문제를 일으키는 것입니다.값이 다른 테이블의 여러 열을 업데이트 - Oracle
하나의 업데이트 문에 결합 할 수있는 방법이 있습니까? 다음은 UPDATE 문 내 목록에서 두 가지 예는 지금이 :
이UPDATE table1 t1
SET t1.col1 = (
SELECT col7
FROM table1 t1b, table2 t2
WHERE t1b.col2 = t2.col2
AND t1b.col3 = t2.col3
AND t1b.col2 = t1.col2)
WHERE t1.col4 = 0
AND t1.col2 IN (SELECT col2 FROM table2);
UPDATE table1 t1
SET t1.col5 = (
SELECT col6
FROM table1 t1c, table3 t3
WHERE t1c.col2 = t3.col2
AND t1c.col3 = t3.col3
AND t1c.col2 = t1.col2)
WHERE t1.col4 = 0
AND t1.col2 IN (SELECT col2 FROM table3);
답변 해 주셔서 감사합니다. 조인을 왼쪽 조인으로 변경했지만 올바른 결과를 얻지 못했습니다. WHERE 절에서이 조건을주의하십시오. AND t1.col2 IN (SELECT col2 FROM table3); AND t1.col2 IN (SELECT col2 FROM table2); table2와 table3에 table1 조인의 모든 항목이 필요하지만 table2와 table3에있는 레코드 만 업데이트하려고합니다. – autumn
"*하지만 table2와 table3 *에있는 레코드 만 업데이트하려고합니다."- 그러면 필요합니다. 내부 조인이 아닌 외부 조인 –
하지만 table1에서 table3까지 모든 항목을 조인해야합니다. JOIN을 사용하면 table1 조인 결과 table2 조인을 table3에 조인하는 대신 table3에서 table3으로 모두 조인하지 않고 – autumn