rownum을 이용한 delete 질문 0 1 6,058

by 안재웅 [SQL Query] delete rownum [2015.04.08 14:40:21]


쿼리 내용으로는 TEST 테이블에서 where 조건에 해당하는 값을 오름차순 정렬하여

일정갯수 만큼 삭제하는 것입니다.

해당 쿼리 실행 시 ORA-01732 에러가 떨어지내요.

해당쿼리에서 delete 를 안하고 select 를 할 경우에는 정상적으로 실행 되며,

또한 delete 쿼리에서 order by 절을 삭제하면 정상적으로 수행 됩니다.

order by 절이 꼭 수행 되어야 하는데 고수님들 도움 구해봅니다.

* where 조건에 만족하는 값이 오래 된 날짜순으로 정렬하여 9개씩 유지하려고 합니다.

ex) 조건에 만족하는 값이 14개 일 경우, 오래된 날짜순으로  5개를 삭제하여 9개만 유지

[수행 쿼리]

delete

  FROM 
       (SELECT * 
         FROM TEST 
        WHERE mac_idx=9 
              AND mac_addr='000000000000' 
              AND data_type='W'
     ORDER BY time_stamp ASC
       ) 
 WHERE ROWNUM < 6

by 창조의날개 [2015.04.08 14:54:15]

DELETE TEST
WHERE PK컬럼명 IN (
  SELECT PK컬럼명
  FROM 
       (SELECT PK컬럼명 
         FROM TEST 
        WHERE mac_idx=9 
              AND mac_addr='000000000000' 
              AND data_type='W'
     ORDER BY time_stamp ASC
       ) 
 WHERE ROWNUM < 6
 )
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입