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

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クエリで効率よく削除できます。大量のデータを条件付きで一括削除したい場合に非常に便利な手法なので、ぜひ活用してください。

  1. MySQLで異なる列を持つ別テーブルへレコードをコピーする方法(INSERT INTO SELECT活用)

    あるテーブルから、列名や構成が異なる別のテーブルへレコードをコピーしたい場合、INSERT INTO SELECT 文を使用します。この記事では、実際にサンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。 ステップ1:コピー元のテーブルを作成する まずはコピー元となるテーブル「DemoTable1900」を作成します。ClientIdは自動採番(AUTO_INCREMENT)とし、初期値を1000に設定しています。また、ClientAgeにはデフォルト値29を設定しました。 mysql> create table DemoTable1900 ( Clie

  2. MySQLで複数のキーワードに一致するレコードを抽出する方法|RLIKE演算子の使い方を解説

    RLIKE演算子を使った複数条件でのレコード絞り込み MySQLで複数の単語(キーワード)のいずれかに一致するレコードを抽出したい場合は、RLIKE演算子を使用します。RLIKEは正規表現によるパターンマッチングを行う演算子で、|(パイプ)で区切ることで、OR条件のように複数の値を指定できます。 基本的な構文は以下のとおりです。 SELECT * FROM yourTableName WHERE yourColumnName RLIKE yourValue1|yourValue2; サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> CREATE