[sql] DELETE 문을 사용하여 부서별로 특정 개수 이상의 레코드가 있는 경우 부서 전체 레코드 삭제 방법

일반적으로 SQL의 DELETE 문은 특정 조건에 맞는 레코드를 삭제하는데 사용됩니다. 하지만 특정 개수 이상의 레코드를 가지고 있는 부서 전체를 삭제하기 위해서는 약간의 추가적인 작업이 필요합니다.

1. 특정 개수 이상의 레코드를 가진 부서 확인하기

먼저, 특정 개수 이상의 레코드를 가진 부서를 확인해야 합니다. 이를 확인하기 위해 GROUP BYHAVING 절을 사용할 수 있습니다.

SELECT department_id, COUNT(*) AS record_count
FROM your_table
GROUP BY department_id
HAVING COUNT(*) > 특정 개수;

위의 쿼리에서 your_table은 작업을 수행하고자 하는 테이블의 이름을 나타냅니다. department_id는 부서를 구분하는 기준으로 사용되는 컬럼의 이름입니다. 특정 개수는 삭제하고자 하는 임계치를 의미하는 숫자입니다.

2. 특정 개수 이상의 레코드를 가진 부서 삭제하기

1단계에서 확인한 부서를 삭제하기 위해 DELETE 문을 사용할 수 있습니다. 하지만 이 경우에는 부서를 식별할 수 있는 조건이 필요합니다.

DELETE FROM your_table
WHERE department_id IN (
    SELECT department_id
    FROM your_table
    GROUP BY department_id
    HAVING COUNT(*) > 특정 개수
);

위의 쿼리에서 your_table은 작업을 수행하고자 하는 테이블의 이름을 나타냅니다. department_id는 부서를 구분하는 기준으로 사용되는 컬럼의 이름입니다. 특정 개수는 삭제하고자 하는 임계치를 의미하는 숫자입니다.

위의 쿼리를 실행하면, 특정 개수 이상의 레코드를 가진 부서 전체가 삭제됩니다.

주의사항

참고 자료