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

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()との違いを理解しておくと、条件によるデータ絞り込みがより柔軟に行えるようになります。

  1. MySQLで複数のカラムにNULL値を含むレコードを検索する方法

    はじめにMySQLで複数のカラムの中にNULL値が1つでも含まれているレコードを抽出したい場合、GREATEST()関数を活用するのが効果的です。GREATEST()は引数の中から最大値を返す関数ですが、引数のいずれかにNULLが含まれている場合、結果もNULLを返すという特性があります。この特性を利用すれば、複数カラムにわたるNULL値のチェックをシンプルな条件式で実現できます。この記事では、実際にテーブルを作成し、サンプルデータを挿入して、NULL値を含むレコードを検索する手順を順番に解説します。テーブルの作成まず、4つのINT型カラムを持つテーブルを作成しましょう。mysql> c

  2. 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コマンドを使ってテ