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

MySQL에서 IN 절로 ID 기준 여러 행 한 번에 삭제하는 방법

MySQL에서는 IN 문을 활용하면 ID를 기준으로 테이블의 여러 행을 한 번의 쿼리로 손쉽게 삭제할 수 있습니다. 개별적으로 DELETE 문을 반복 실행할 필요 없이, 삭제하고자 하는 값들을 나열하기만 하면 됩니다.

기본 문법

IN 절을 사용한 다중 행 삭제의 기본 문법은 다음과 같습니다.

DELETE FROM yourTableName WHERE yourColumnName IN(value1, value2, ..... valueN);

예제 테이블 생성

문법을 실제로 이해하기 위해 먼저 예제용 테이블을 만들어 보겠습니다. 아래는 테이블 생성 쿼리입니다.

mysql> create table DeleteManyRows
    -> (
    -> Id int,
    -> Name varchar(200),
    -> Age int
    -> );
Query OK, 0 rows affected (3.35 sec)

데이터 삽입

INSERT 명령어를 사용해 테이블에 샘플 데이터를 입력합니다. 쿼리는 다음과 같습니다.

mysql> insert into DeleteManyRows values(1,'John',23);
Query OK, 1 row affected (0.66 sec)

mysql> insert into DeleteManyRows values(2,'Johnson',22);
Query OK, 1 row affected (0.48 sec)

mysql> insert into DeleteManyRows values(3,'Sam',20);
Query OK, 1 row affected (0.39 sec)

mysql> insert into DeleteManyRows values(4,'David',26);
Query OK, 1 row affected (0.35 sec)

mysql> insert into DeleteManyRows values(5,'Carol',21);
Query OK, 1 row affected (0.10 sec)

mysql> insert into DeleteManyRows values(6,'Smith',29);
Query OK, 1 row affected (0.14 sec)

전체 데이터 조회

SELECT 문으로 테이블에 저장된 모든 레코드를 확인해 보겠습니다.

mysql> select *from DeleteManyRows;

실행 결과는 다음과 같습니다.

+------+---------+------+
| Id   | Name    | Age |
+------+---------+------+
| 1    | John    | 23  |
| 2    | Johnson | 22  |
| 3    | Sam     | 20  |
| 4    | David   | 26  |
| 5    | Carol   | 21  |
| 6    | Smith   | 29  |
+------+---------+------+
6 rows in set (0.00 sec)

IN 절로 여러 행 삭제하기

이제 IN 문을 사용해 ID가 1, 2, 3, 4인 행을 한 번에 삭제하는 쿼리를 실행해 보겠습니다.

mysql> delete from DeleteManyRows where Id in(1,2,3,4);
Query OK, 4 rows affected (0.25 sec)

쿼리 결과 메시지에서 알 수 있듯이 총 4개의 행이 성공적으로 삭제되었습니다.

삭제 결과 확인

여러 행이 정상적으로 삭제되었는지 다시 SELECT 문으로 확인해 보겠습니다.

mysql> select *from DeleteManyRows;

실행 결과는 다음과 같습니다.

+------+-------+------+
| Id   | Name  | Age  |
+------+-------+------+
|    5 | Carol | 21   |
|    6 | Smith | 29   |
+------+-------+------+
2 rows in set (0.00 sec)

ID가 1부터 4까지인 행은 모두 제거되고, ID가 5와 6인 두 개의 행만 남아 있는 것을 확인할 수 있습니다. 이처럼 IN 절을 사용하면 조건에 맞는 여러 행을 단일 쿼리로 간편하게 삭제할 수 있습니다.