by 김태원 [SQL Query] update 부분수정 [2015.03.20 16:53:43]
제목 그대로입니다.
WHERE 조건을 주면 여러 건의 데이터가 나옵니다.
결과셋은 다 같은 내용인데, SEQ부분만 다릅니다.
SEQ로 정렬해서 최상위의 데이터 1건만 UPDATE을 해주고 싶습니다.
... 방법이 떠오르지 않아요... ㅠ.ㅜ;;
나름 이것저것 별의별 짓거리 다 해보고 있는데... ROWID를 잘 사용하면 될것 같기는 한데;;
가르침 부탁드리겠습니다... __)
혹 이게 안된다면... TABLE 구조 자체를 바꾸어야겠지요?
(1) col1 + seq로 인덱스가 존재하는 경우 (idx_col1_seq) UPDATE TEST SET col2 = 'XXX' WHERE rowid = (select /*+ index_desc(t idx_col1_seq) */ rowid from TEST t where col1 = 2 and rownum = 1) 또 인덱스가 없는경우에는 UPDATE TEST SET col2 = 'XXX' WHERE col1 = 2 and seq = (select MAX(seq) from TEST t where col1 = 2) 이렇게 되야겠네요. 너무 비효율적인거 같네요. 더 좋은 방법 찾아보도록 하겠습니다.