MySQL에서 선택적으로 여러 레코드 삭제하기
MySQL에서 조건에 맞는 여러 레코드를 한 번에 삭제하려면 IN() 연산자와 DELETE 쿼리를 함께 사용하면 됩니다. IN()은 삭제할 대상 레코드를 선택하는 역할을 하고, DELETE가 실제로 해당 레코드를 제거합니다.
실제 동작 과정을 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
ClientId varchar(40),
ClientName varchar(50)
);
Query OK, 0 rows affected (0.62 sec)2단계: 데이터 삽입
INSERT 명령어를 사용해 테이블에 샘플 레코드를 추가합니다.
mysql> insert into DemoTable values('CLI-101','Chris');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('CLI-110','Adam');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('CLI-220','Mike');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('CLI-120','Bob');
Query OK, 1 row affected (0.53 sec)
mysql> insert into DemoTable values('CLI-240','Sam');
Query OK, 1 row affected (0.06 sec)3단계: 전체 레코드 조회
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------+------------+ | ClientId | ClientName | +----------+------------+ | CLI-101 | Chris | | CLI-110 | Adam | | CLI-220 | Mike | | CLI-120 | Bob | | CLI-240 | Sam | +----------+------------+ 5 rows in set (0.00 sec)
4단계: IN()을 사용한 선택적 다중 레코드 삭제
이제 특정 ClientId 값들만 골라서 삭제하는 쿼리입니다. WHERE 절과 IN()을 조합하면 지정한 여러 값을 한 번의 쿼리로 처리할 수 있습니다.
mysql> delete from DemoTable where ClientId IN('CLI-101','CLI-220','CLI-240');
Query OK, 3 rows affected (0.10 sec)'CLI-101', 'CLI-220', 'CLI-240'에 해당하는 3개의 레코드가 삭제되었습니다.
5단계: 삭제 결과 확인
테이블을 다시 조회하여 삭제가 정상적으로 적용되었는지 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------+------------+ | ClientId | ClientName | +----------+------------+ | CLI-110 | Adam | | CLI-120 | Bob | +----------+------------+ 2 rows in set (0.00 sec)
정리
MySQL에서 선택적인 여러 레코드를 삭제할 때는 DELETE FROM 테이블명 WHERE 컬럼명 IN(값1, 값2, ...) 형식의 쿼리를 사용하면 됩니다. 이 방식은 OR 조건을 여러 번 나열하는 것보다 코드가 간결하고 가독성이 뛰어나며, 대량의 조건값을 처리할 때도 효율적입니다.