MySQLで指定した値が含まれるか判定する(in や not in の使い方)

指定した値が含まれるかどうかを判定するには「IN」句や「NOT IN」句を使います。

ここでは MySQLコマンド「IN」や「NOT IN」の具体的な使い方を解説していきます。

 

「IN」や「NOT IN」の基本

「IN」や「NOT IN」は、「WHERE」などと組み合わせて条件式で使います。

 

「IN」のコマンド例

これで指定したカラム名の値がAやBのいずれかに一致しているデータを検索できます。

SELECT * FROM テーブル名 WHERE カラム名 IN (A, B, ……);

 

「NOT IN」のコマンド例

これで指定したカラム名の値がAやBのいずれにも一致していないデータを検索できます。

SELECT * FROM テーブル名 WHERE カラム名 NOT IN (A, B, ……);
メモ

SELECT 文の詳しい使い方はこちら

 

指定した値のいずれかが含まれるデータを検索する

実際にMySQLサーバーに接続し、動作を確認してみましょう。

 

あらかじめ「test」データベースの「users」テーブルに、以下のようにデータが保存されている例で進めていきます。

name age
佐藤 21
鈴木 25
山田 32

データを保存するコマンド例

CREATE DATABASE test;
USE test;
CREATE TABLE users (name VARCHAR(100), age INT);
INSERT INTO users (name, age) VALUES ('佐藤', 21);
INSERT INTO users (name, age) VALUES ('鈴木', 25);
INSERT INTO users (name, age) VALUES ('山田', 32);
メモ

CREATE DATABASE 文の詳しい使い方はこちら

USE 文の詳しい使い方はこちら

CREATE TABLE 文の詳しい使い方はこちら

INSERT INTO 文の詳しい使い方はこちら

 

それでは「age」カラムの値が「21」か「25」に当てはまるデータを検索してみましょう。コマンドは以下。

SELECT * FROM users WHERE age IN (21, 25);

 

コマンドを実行すると、以下のように「age」カラムの値が「21」か「25」のデータだけが表示されました。

 

指定した値のいずれにも含まれないデータを検索する

今度は「age」カラムの値が「21」や「25」に当てはまらないデータを検索してみましょう。コマンドは以下。

SELECT * FROM users WHERE age NOT IN (21, 25);

コマンドを実行すると、以下のように「age」カラムの値が「21」や「25」ではないデータが表示されました。

 

ここまでが「IN」や「NOT IN」の基本!

理解をさらに深めたい方は以下からの内容もご覧ください。

 

「IN」句の中で「SELECT」文を使う

「SELECT」文で得られた結果を「IN」句の条件で使うことができます。

 

「test2」テーブルから得られた「id」カラムのデータを、「test1」テーブルの「id」カラムの条件にするコマンド例

SELECT * FROM test1 WHERE id IN (SELECT id FROM test2);

 

まとめ

以上、MySQLコマンド「IN」や「NOT IN」の使い方でした!

 

ここまでの内容をまとめておきます。

  • 「IN」で指定したどれかの値が含まれるかどうかを判定することができる。
  • 「NOT IN」で指定した値のどれにも含まれないかどうかを判定することができる。