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)
);
Query OK, 0 rows affected (0.00 sec)2. レコードの挿入
次に、INSERT文を使ってテーブルに複数のレコードを挿入します。
mysql> insert into DemoTable1922(StudentName) values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1922(StudentName) values('Robert');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1922(StudentName) values('David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1922(StudentName) values('Mike');
Query OK, 1 row affected (0.00 sec)3. テーブル内の全レコードを確認
SELECT文でテーブル内のすべてのレコードを表示します。
mysql> select * from DemoTable1922;
実行すると、以下のような結果が出力されます。
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | Chris | | 2 | Robert | | 3 | David | | 4 | Mike | +-----------+-------------+ 4 rows in set (0.00 sec)
4. IN()句を使ったレコードの一括削除
ここからが本題です。IN()句を使用して、指定した複数のStudentIdに該当するレコードを1つのクエリで削除します。
mysql> delete from DemoTable1922 where StudentId IN(1,2,3,4); Query OK, 4 rows affected (0.00 sec)
この例ではIDの1〜4を指定していますが、実際には「IN(1,3)」のように特定の値だけを指定することもできます。これにより、条件に合致するレコードだけを選択的に削除できます。
5. 削除後の確認
もう一度SELECT文を実行して、レコードが正しく削除されたかを確認しましょう。
mysql> select * from DemoTable1922;
実行結果は以下の通り、空のセットが返されます。
Empty set (0.00 sec)
まとめ
IN()句をWHERE句と組み合わせることで、複数の値に一致するレコードを単一のDELETEクエリで効率よく削除できます。大量のデータを条件付きで一括削除したい場合に非常に便利な手法なので、ぜひ活用してください。
-
MySQLで異なる列を持つ別テーブルへレコードをコピーする方法(INSERT INTO SELECT活用)
あるテーブルから、列名や構成が異なる別のテーブルへレコードをコピーしたい場合、INSERT INTO SELECT 文を使用します。この記事では、実際にサンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。 ステップ1:コピー元のテーブルを作成する まずはコピー元となるテーブル「DemoTable1900」を作成します。ClientIdは自動採番(AUTO_INCREMENT)とし、初期値を1000に設定しています。また、ClientAgeにはデフォルト値29を設定しました。 mysql> create table DemoTable1900 ( Clie
-
MySQLで複数のキーワードに一致するレコードを抽出する方法|RLIKE演算子の使い方を解説
RLIKE演算子を使った複数条件でのレコード絞り込み MySQLで複数の単語(キーワード)のいずれかに一致するレコードを抽出したい場合は、RLIKE演算子を使用します。RLIKEは正規表現によるパターンマッチングを行う演算子で、|(パイプ)で区切ることで、OR条件のように複数の値を指定できます。 基本的な構文は以下のとおりです。 SELECT * FROM yourTableName WHERE yourColumnName RLIKE yourValue1|yourValue2; サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> CREATE