MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでIDを指定してテーブルから複数行を削除する方法(IN句の使い方)

はじめに

MySQLでは、IN句を使うことで、IDを指定してテーブルから複数の行を一度に削除できます。削除したい値をカンマ区切りで列挙するだけなので、WHERE句を何度も書き分ける必要がなく、非常に便利です。

基本構文

IN句を使用した複数行削除の構文は以下の通りです。

DELETE FROM テーブル名 WHERE カラム名 IN (値1, 値2, ... 値N);

それでは、実際にサンプルテーブルを作成しながら動作を確認していきましょう。

サンプルテーブルの作成

まず、以下のクエリでテーブルを作成します。

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〜4の行をまとめて削除してみます。

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

「4 rows affected」と表示されており、4行が削除されたことがわかります。

削除後の確認

削除後に残っているレコードを確認してみましょう。

mysql> select *from DeleteManyRows;

実行結果は以下の通りです。

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

まとめ

このように、MySQLではIN句に削除したいIDをカンマ区切りで指定するだけで、複数の行を1つのクエリで効率的に削除できます。大量のデータを条件付きでまとめて削除したい場合に、ぜひ活用してください。

  1. MySQLで1つのテーブルから別のテーブルに行をコピーする方法【INSERT INTO SELECT文の使い方】

    MySQLでテーブル間の行コピーを実現する方法MySQLであるテーブルから別のテーブルへ行(レコード)をコピーしたい場合は、INSERT INTO SELECT文を使用します。この文を使えば、SELECT句で取得したデータをそのまま別のテーブルに挿入できるため、WHERE句による条件指定と組み合わせれば、必要な行だけを効率よくコピーすることも可能です。ここでは、実際にサンプルテーブルを作成し、行をコピーする手順を順番に解説します。手順1:コピー元のテーブルを作成するまず、コピー元となるテーブル「DemoTable1879」を作成します。mysql> create table DemoTa

  2. MySQLのDELETE文とIN句を組み合わせて1つのクエリで複数レコードを削除する方法

    MySQLでは、IN()句を活用することで、複数の条件値に一致するレコードを1つのDELETEクエリでまとめて削除できます。個別に削除クエリを実行する必要がなく、効率的なデータ操作が可能になります。ここでは、サンプルテーブルを作成し、実際にIN()句を使ったレコード削除の手順を解説します。1. サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable1922 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20)