Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL DELETE 쿼리로 IN() 연산자를 활용한 선택적 다중 레코드 삭제 방법

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 조건을 여러 번 나열하는 것보다 코드가 간결하고 가독성이 뛰어나며, 대량의 조건값을 처리할 때도 효율적입니다.