[sql] DELETE 문을 사용하여 테이블의 특정 열을 기준으로 TOP N개의 레코드 삭제 방법

DELETE FROM table_name WHERE column_name IN ( SELECT TOP N column_name FROM table_name ORDER BY column_name ASC )


위의 SQL 쿼리를 사용하여 테이블에서 특정 열을 기준으로 TOP N개의 레코드를 삭제할 수 있습니다. 이 쿼리는 `DELETE` 문을 사용하며, `table_name`은 삭제할 레코드를 가지고 있는 테이블의 이름을 대체해야 합니다. 또한 `column_name`은 삭제할 레코드를 기준으로 선택할 열의 이름을 대체해야 합니다.

이 쿼리의 핵심은 `WHERE` 절의 `IN` 연산자를 사용하여 삭제할 레코드를 선택하는 부분입니다. 서브쿼리를 사용하여 `TOP N`개의 레코드를 선택한 후, 기준 열(`column_name`)을 오름차순으로 정렬하여 삭제 대상으로 지정합니다.

예를 들어, `customers`라는 테이블에서 `age` 열을 기준으로 상위 100개의 레코드를 삭제하려면 다음과 같이 쿼리를 작성할 수 있습니다:

```sql
DELETE FROM customers
WHERE customer_id IN (
  SELECT TOP 100 customer_id
  FROM customers
  ORDER BY age ASC
)

이 문장은 customers 테이블에서 age 열을 기준으로 가장 낮은 값부터 상위 100개의 레코드를 선택하여 삭제합니다.

위의 예시는 Microsoft SQL Server에서 사용할 수 있는 문법입니다. 다른 SQL 데이터베이스 시스템에서는 문법이 다를 수 있으니 해당 시스템의 문서를 참조하시기 바랍니다.

참조: