sql delete record maximum count exceed ( 한방쿼리 )
예) users 테이블에서 100개 이상된 자료 지우기
DELETE FROM users WHERE id <=
( SELECT id FROM
( SELECT id FROM users ORDER BY id DESC LIMIT 100,1) AS s1
) ;
- 한번더 감싸야 한다. 감싸지 않고
DELETE FROM users WHERE id < ( SELECT id FROM users ORDER BY id DESC LIMIT 100,1) ;
- 하면 에러
에러 메시지 You can't specify target table 'users' for update in FROM clause
//----------------------------
// 참고 - NOT IN 은 에러 mysql 에서 LIMIT와 함께 사용이 안됨
DELETE FROM users WHERE
id NOT IN ( SELECT id FROM users ORDER BY id DESC LIMIT 100 ) ;
- mysql이 지원 안함 , 에러 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
반응형
'Code > Database (DB)' 카테고리의 다른 글
[SQL] 날짜별 레코드 카운트 구하기 (0) | 2020.07.31 |
---|---|
[SQL] 테이블 자료 용량 확인 (0) | 2020.07.26 |
[SQL] WHERE IN 의 배열 순서대로 정렬해서 결과 리턴 (0) | 2020.07.26 |
[MySQL] Window Function (0) | 2020.06.08 |
[펌] MySQL 8.0 새기능 (0) | 2020.03.10 |