티스토리 뷰
업무/SQL
SQL : 전체에서 몇개 제외하고 삭제 / MIN() / order by / desc / Mybatis<![CDATA[]]>
/daydreamer 2016. 11. 30. 15:44데이터를 쌓아서 어떤 상황에서 최근 100건만 남기고 삭제해야 하는 쿼리를 작성해보았다.
먼저 최근 100건만 가져오는 select 쿼리를 작성하였다.
reg_dt 는 시간을 저장한 컬럼이다.
1 2 3 4 | select * from tb_log_actions order by reg_dt desc limit 100 | cs |
MIN() 함수는 컬럼값 중 가장 작은 값 하나를 가져오는 함수이다.
reg_dt 는 시간이고, 최근 100건만 남기고 삭제해야 하므로 100건중 가장 작은 값이 결과로 나오게 된다.
1 2 3 4 | select min(reg_dt) from ( select reg_dt from tb_log_actions order by reg_dt desc limit 100) a | cs |
삭제하는 함수는 delete 함수이다.
delete from 테이블명 으로 삭제한다.
그런데 최근 100건 이하의 데이터는 모두 삭제되어야 하므로 where 조건으로 설정해준다.
1 2 3 4 5 6 | delete from tb_log_actions where reg_dt < (select min(reg_dt) from ( select reg_dt from tb_log_actions order by reg_dt desc limit 100) a) | cs |
Mybatis는 XML에 정의하기 때문에 부등호를 그냥 쓰면 오류가 난다.
<![CDATA[]]>로 감싸주자 !
1 2 3 4 5 6 7 | delete from tb_log_actions <![CDATA[ where reg_dt < (select MIN(reg_dt) from ( select reg_dt from tb_log_actions order by reg_dt DESC limit 100) a) ]]> | cs |
'업무 > SQL' 카테고리의 다른 글
SQL : JOIN / OUTER JOIN / LEFT OUTER JOIN / GROUP BY / HAVING (0) | 2017.06.12 |
---|---|
SQL : JOIN / SELF JOIN / OUTER JOIN / RIGHT OUTER JOIN / GROUP BY / HAVING / DISTINCT (0) | 2016.12.01 |
SQL : 날짜 제한 검색하기 / Mybatis <![CDATA[ ]]> (0) | 2016.08.01 |
SQL : View 화면 특정값 전부 대소문자 / UPPER / LOWER / INSERT / CASE WHEN / UPDATE (0) | 2016.07.19 |
SQL : if문/ for문 / foreach / trim (0) | 2016.07.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- String[] 파라미터
- 스크립팅 요소
- c 태그
- 윈도우8.1
- servlet게시판
- SQL
- 게시판table설계
- 자바
- 체크박스전체선택
- servlet
- 제이쿼리
- 게시판페이지설계
- input[type=text]초기화
- windows 8.1
- 체크박스
- 스프링
- jsp
- 자바스크립트
- Javascript
- windows hyper-v
- jsp 기초 개념
- Hyper-V
- spring
- 이클립스DB연결
- input[type=file]초기화
- Split
- selectbox에 값 매핑
- java
- foreach 배열
- 체크박스전체해제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함