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

MySQLのDELETEクエリとIN()句を使って選択した複数のレコードを削除する方法


MySQLで条件に合致する複数のレコードを選択的に削除したい場合は、WHERE句と組み合わせてIN()句を使用します。そして実際の削除にはDELETEクエリを実行します。ここでは、サンプルコードとともに具体的な手順をわかりやすく解説します。まずはテーブルを作成しましょう。

1. テーブルの作成

mysql> create table DemoTable
(
    ClientId varchar(40),
    ClientName varchar(50)
);
Query OK, 0 rows affected (0.62 sec)

2. レコードの挿入

続いて、INSERT文を使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable values('CLI-101','Chris');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('CLI-110','Adam');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('CLI-220','Mike');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('CLI-120','Bob');
Query OK, 1 row affected (0.53 sec)
mysql> insert into DemoTable values('CLI-240','Sam');
Query OK, 1 row affected (0.06 sec)

3. テーブル内の全レコードを確認

SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

上記のクエリを実行すると、次のような出力が得られます。

+----------+------------+
| ClientId | ClientName |
+----------+------------+
| CLI-101  | Chris      |
| CLI-110  | Adam       |
| CLI-220  | Mike       |
| CLI-120  | Bob        |
| CLI-240  | Sam        |
+----------+------------+
5 rows in set (0.00 sec)

4. IN()句を使って複数のレコードを削除する

それでは、ClientIdが「CLI-101」「CLI-220」「CLI-240」の3件を選択的に削除するクエリを見てみましょう。

mysql> delete from DemoTable where ClientId IN('CLI-101','CLI-220','CLI-240');
Query OK, 3 rows affected (0.10 sec)

このように、IN()句の中に削除したい値をカンマ区切りで列挙するだけで、該当する複数のレコードを一度にまとめて削除できます。個別にDELETE文を何度も実行する必要はありません。

5. 削除後のレコードを確認

もう一度SELECT文を実行して、レコードが正しく削除されたかどうかを確認します。

mysql> select *from DemoTable;

実行結果は以下の通りです。「CLI-110」と「CLI-120」の2件だけが残っていることがわかります。

+----------+------------+
| ClientId | ClientName |
+----------+------------+
| CLI-110  | Adam       |
| CLI-120  | Bob        |
+----------+------------+
2 rows in set (0.00 sec)

まとめと注意点

MySQLでは、DELETE文とIN()句を組み合わせることで、指定した複数のレコードを効率的に一括削除できます。

注意点: DELETEクエリを実行する際は、必ずWHERE句を付けるようにしてください。WHERE句を忘れると、テーブル内のすべてのレコードが削除されてしまいます。また、本番環境で実行する前には、同じ条件でまずSELECT文を実行し、対象となるレコードを事前に確認しておくことをおすすめします。


  1. MySQLで複数のレコードをすばやく一括挿入するクエリの書き方

    MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル

  2. Node.jsでMySQLのレコードを削除する方法を解説

    はじめにデータベースへのレコード挿入後、不要になったデータを削除する場面も必ず出てきます。MySQLでは、テーブル内のレコードを識別子(条件)に基づいて削除することが可能で、その際には「DELETE FROM」ステートメントを使用します。Node.jsからMySQLのレコードを削除する方法は、主に以下の2通りがあります。静的な削除 – あらかじめ決められた条件値を指定して削除する方法です。動的な削除 – 削除前にユーザーから入力を受け取り、その値に基づいて削除を実行する方法です。事前準備作業を始める前に、以下のコマンドがすでに実行済みであることを確認してください。mkdir mysql-tes