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