MySQL에서 처음 또는 마지막 n개 행을 삭제하는 방법

MySQL에서 처음 또는 마지막 n개 행을 삭제하는 방법

2022-10-03 last update

4 minutes reading howto mysql delete sql
이 질문에 이 예제 데이터베이스 스키마를 사용하거나 테스트를 위해 데이터베이스 테이블을 사용할 수 있습니다.

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를 방문하십시오.