
MySQL에서 처음 또는 마지막 n개 행을 삭제하는 방법
이 질문에 이 예제 데이터베이스 스키마를 사용하거나 테스트를 위해 데이터베이스 테이블을 사용할 수 있습니다.
이 SQL 쿼리는 기본 키
이 SQL 쿼리는
위의 쿼리는 테이블의
이 쿼리는
더 많은 관련 콘텐츠를 보려면 devtonight.com를 방문하십시오.
CREATE TABLE `students` (
`id` int UNSIGNED NOT NULL,
`stid` varchar(16) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE `students` ADD PRIMARY KEY (`id`);
기본 키를 사용하여 레코드 삭제
이 SQL 쿼리는 기본 키
id
가 100보다 작거나 같은 모든 레코드를 삭제합니다.DELETE FROM `students` WHERE `id` <= 100;
이 SQL 쿼리는
id
가 900보다 큰 모든 레코드를 삭제합니다.DELETE FROM `students` WHERE `id` > 900;
위의 쿼리는 테이블의
id
값을 고려하여 레코드를 삭제합니다. 문제는 테이블의 id
가 정확히 하나씩 증가하지 않으면 어떻게 되는지입니다. 또는 일부 레코드가 이미 제거되었습니다. 또는 id
조차도 숫자가 아닙니다. 이러한 상황에서는 위에서 언급한 쿼리가 예상대로 작동하지 않습니다.ORDER BY를 사용하여 레코드 삭제
이 쿼리는
created_at
열을 기준으로 전체 테이블을 정렬하고 처음 100개의 레코드를 삭제합니다.DELETE FROM `students` ORDER BY `created_at` ASC limit 100
DESC
(오름차순) 대신 ASC
(내림차순)을 사용하여 위 쿼리의 순서를 반전할 수 있으므로 마지막 100개의 레코드가 삭제됩니다.DELETE FROM `students` ORDER BY `created_at` DESC limit 100
더 많은 관련 콘텐츠를 보려면 devtonight.com를 방문하십시오.