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文を実行し、対象となるレコードを事前に確認しておくことをおすすめします。
-
MySQLで複数のレコードをすばやく一括挿入するクエリの書き方
MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル
-
Node.jsでMySQLのレコードを削除する方法を解説
はじめにデータベースへのレコード挿入後、不要になったデータを削除する場面も必ず出てきます。MySQLでは、テーブル内のレコードを識別子(条件)に基づいて削除することが可能で、その際には「DELETE FROM」ステートメントを使用します。Node.jsからMySQLのレコードを削除する方法は、主に以下の2通りがあります。静的な削除 – あらかじめ決められた条件値を指定して削除する方法です。動的な削除 – 削除前にユーザーから入力を受け取り、その値に基づいて削除を実行する方法です。事前準備作業を始める前に、以下のコマンドがすでに実行済みであることを確認してください。mkdir mysql-tes