MySQLで指定したセットに含まれないすべてのレコードを取得する方法
MySQLのNOT IN()関数とは
MySQLである値のセット(配列)に含まれないレコードだけを抽出したい場合には、NOT IN() 関数を使用します。WHERE句と組み合わせることで、指定したリスト外のデータを簡単に絞り込むことができます。
ここでは、実際にサンプルテーブルを作成し、NOT IN() を使ったレコードの取得方法を順番に見ていきましょう。
1. サンプルテーブルを作成する
まず、以下のコマンドでテーブルを作成します。
mysql> create table DemoTable718 (
Id int,
FirstName varchar(100),
Age int
);
Query OK, 0 rows affected (0.59 sec)
2. レコードを挿入する
次に、INSERT文を使ってテーブルにデータを追加します。
mysql> insert into DemoTable718 values(101,'Chris',26);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable718 values(102,'Robert',24);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable718 values(103,'David',27);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable718 values(104,'Mike',28);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable718 values(105,'Sam',23);
Query OK, 1 row affected (0.14 sec)
3. テーブル内の全レコードを確認する
SELECT文を実行して、登録されたデータを確認してみましょう。
mysql> select *from DemoTable718;
このクエリを実行すると、次のような結果が得られます。
+------+-----------+------+
| Id | FirstName | Age |
+------+-----------+------+
| 101 | Chris | 26 |
| 102 | Robert | 24 |
| 103 | David | 27 |
| 104 | Mike | 28 |
| 105 | Sam | 23 |
+------+-----------+------+
5 rows in set (0.00 sec)
4. NOT IN()でセットに含まれないレコードを取得する
それでは本題です。Idが「101」「103」「104」のいずれでもないレコードを取得するには、以下のようにNOT IN()を使用します。
mysql> select *from DemoTable718 where Id NOT IN('101','103','104');実行結果は以下の通りです。
+------+-----------+------+
| Id | FirstName | Age |
+------+-----------+------+
| 102 | Robert | 24 |
| 105 | Sam | 23 |
+------+-----------+------+
2 rows in set (0.00 sec)
このように、指定したセットに含まれないId「102」と「105」のレコードのみが抽出されました。
まとめ
MySQLで特定の値のリストに該当しないレコードを取得したい場合は、WHERE句とNOT IN()を組み合わせるだけで簡単に実現できます。IN()との違いを理解しておくと、条件によるデータ絞り込みがより柔軟に行えるようになります。
-
MySQLで複数のカラムにNULL値を含むレコードを検索する方法
はじめにMySQLで複数のカラムの中にNULL値が1つでも含まれているレコードを抽出したい場合、GREATEST()関数を活用するのが効果的です。GREATEST()は引数の中から最大値を返す関数ですが、引数のいずれかにNULLが含まれている場合、結果もNULLを返すという特性があります。この特性を利用すれば、複数カラムにわたるNULL値のチェックをシンプルな条件式で実現できます。この記事では、実際にテーブルを作成し、サンプルデータを挿入して、NULL値を含むレコードを検索する手順を順番に解説します。テーブルの作成まず、4つのINT型カラムを持つテーブルを作成しましょう。mysql> c
-
MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方
MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ