안녕하세요 요즘 업데이트 관련해서 테스트를 해보고있는 오라클 초심자입니다.
지금 하고있는게
table1 table2
col1 col2 col3 col1 col2
112233 사과 null 112233 과일
112233 바나나 null 223344 채소
112233 포도 null
112233 딸기 null
223344 토마토 null
223344 당근 null
223344 오이 null
위와같은 두테이블의 조건을 비교한후 table1의 col3에 table2의 col2값을 입력하고싶어서,
예)table1의 col1값과 table2의 col1값이 같을경우
update table1 set col3 = (select a.col2 from table2 a,table1 b where a.col1=b.col1);
라는 코드를 실행하면,
ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.라는 오류가 발생하여
고수님들의 조언을 부탁드립니다.
col1 조건으로 검색하는 것이니 col1 이 유일하면 됩니다.
Update 문을 바로 만들지 마시고
Select 문을 만들어 확인하고 난 후, Update 문으로 변경하는 습관을 들이세요.
-- 1. 변경 대상 확인용 쿼리 SELECT a.col1 , a.col2 , a.col3 , (SELECT b.col2 FROM table2 b WHERE b.col1 = a.col1) FROM table1 a WHERE EXISTS (SELECT 0 FROM table2 b WHERE b.col1 = a.col1) ; -- 2. 갱신용 쿼리 UPDATE table1 a SET a.col3 = (SELECT b.col2 FROM table2 b WHERE b.col1 = a.col1) WHERE EXISTS (SELECT 0 FROM table2 b WHERE b.col1 = a.col1) ;