MySQLでNOT INを使って特定のレコードを除外して削除する方法
NOT IN演算子で残したいレコード以外を一括削除する
MySQLでは、DELETE文とNOT IN演算子を組み合わせることで、「削除したくないレコード」を指定し、それ以外のレコードをまとめて削除できます。この記事では、実際にテーブルを作成してデータを挿入し、NOT INを使った削除の手順を順番に解説します。
1. テーブルを作成する
まず、サンプル用のテーブルを作成しましょう。
mysql> create table DemoTable
(
FirstName varchar(100)
);
Query OK, 0 rows affected (0.65 sec)
2. レコードを挿入する
INSERTコマンドを使って、いくつかのレコードをテーブルに追加します。
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.12 sec)
3. テーブルの内容を確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような結果が得られます。
+-----------+ | FirstName | +-----------+ | Chris | | Robert | | Mike | | Sam | | David | +-----------+ 5 rows in set (0.00 sec)
現在、5件のレコードが登録されていることが確認できます。
4. NOT INを使ってレコードを削除する
ここからが本題です。以下のクエリでは、NOT INを使って「Robert」と「Mike」以外のレコードを削除しています。つまり、指定した名前リストに含まれないレコードだけが削除対象になります。
mysql> delete from DemoTable where FirstName NOT IN('Robert', 'Mike');
Query OK, 3 rows affected (0.17 sec)
「3 rows affected」と表示されている通り、Chris・Sam・Davidの3件が削除されました。
5. 削除後のテーブルを確認する
もう一度SELECT文を実行して、結果を確認しましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-----------+ | FirstName | +-----------+ | Robert | | Mike | +-----------+ 2 rows in set (0.00 sec)
まとめ
NOT IN演算子を使えば、「残しておきたいレコード」を条件に指定するだけで、それ以外の不要なレコードを簡単に一括削除できます。INとは逆の動作になるため、大量データの整理やクリーンアップ処理などで非常に便利です。なお、NOT INのリスト内にNULLが含まれると意図しない結果になる場合があるため、実運用ではカラム値にNULLが存在しないか事前に確認しておくと安心です。
-
JavaのPreparedStatementを使ってMySQLテーブルにレコードを挿入する方法
JavaのPreparedStatementを使用してMySQLのテーブルにレコードを挿入するには、まずINSERT文の雛形を作成し、値の部分をプレースホルダー(?)で置き換えます。SQLインジェクション対策やパフォーマンス向上の観点からも、この方法は推奨されています。1. INSERT文の基本構文レコード挿入用のSQLは、以下のような構文で記述します。String anyVariableName = INSERT INTO yourTableName(yourColumnName1, yourColumnName2, yourColumnName3, ...N) + VALUES (?, ?
-
Node.jsでMySQLのレコードを削除する方法を解説
はじめにデータベースへのレコード挿入後、不要になったデータを削除する場面も必ず出てきます。MySQLでは、テーブル内のレコードを識別子(条件)に基づいて削除することが可能で、その際には「DELETE FROM」ステートメントを使用します。Node.jsからMySQLのレコードを削除する方法は、主に以下の2通りがあります。静的な削除 – あらかじめ決められた条件値を指定して削除する方法です。動的な削除 – 削除前にユーザーから入力を受け取り、その値に基づいて削除を実行する方法です。事前準備作業を始める前に、以下のコマンドがすでに実行済みであることを確認してください。mkdir mysql-tes