【MySQL】NOT IN句で特定のIDレコードを除外し、残りを表示する方法
MySQLで特定のレコードを除外した結果を取得したい場合には、NOT IN() を使用します。この記事では、実際にテーブルを作成し、指定したID以外のレコードだけを抽出する手順を実例付きで解説します。
サンプルテーブルの作成
まず、Idカラムのみを持つシンプルなテーブルを作成します。
mysql> create table DemoTable
(
Id int
);
Query OK, 0 rows affected (0.64 sec)
レコードの挿入
次に、INSERTコマンドを使ってテーブルに複数のレコードを追加します。
mysql> insert into DemoTable values(1);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(2);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(3);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values(4);
Query OK, 1 row affected (0.41 sec)
mysql> insert into DemoTable values(5);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(6);
Query OK, 1 row affected (0.12 sec)
登録データの確認
SELECT文で、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+------+
| Id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+------+
6 rows in set (0.00 sec)
NOT IN()でレコードを除外する
ここからが本題です。たとえばID「1、4、6、3」を除外し、それ以外のレコードだけを取得したい場合は、WHERE句とNOT IN()を組み合わせて次のように記述します。
mysql> select *from DemoTable where Id NOT IN(1,4,6,3);
実行結果を見ると、指定したID以外のレコードだけが表示されていることがわかります。
+------+
| Id |
+------+
| 2 |
| 5 |
+------+
2 rows in set (0.00 sec)
注意点:NULL値の扱い
NOT IN()を使用する際は、NULL値に注意が必要です。除外リストの中にNULLが含まれると、条件が正しく評価されず、意図しない結果(空の結果セット)になることがあります。NULLが混在する可能性があるデータを扱う場合は、NOT EXISTS句やLEFT JOIN ~ IS NULLの組み合わせを検討すると安全です。また、大規模なテーブルに対しては、パフォーマンスの観点からJOINを使った書き方が有利になる場合もあります。
-
MySQLでNULLを含む列からNULL以外(NOT NULL)の値だけを抽出して表示する方法
MySQLのIS NOT NULLを使ってNULL以外の値のみを表示するMySQLで、NULLとNULL以外のレコードが混在する列からNULL以外の値だけを取得したい場合は、IS NOT NULL演算子を使用します。この記事では、実際にテーブルを作成しながら手順を解説します。1. テーブルの作成まず、日付型の列を持つサンプルテーブルを作成します。mysql> create table DemoTable1 ( DueDate date ); Query OK, 0 ro
-
MySQLのストアドプロシージャでテーブルのレコードを表示する方法
MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT