サイトアイコン ITC Media

MySQLで使えるIN句|基本から実例まで丁寧に解説

(最終更新月:2023年11月)

✔以下のような方に向けて書かれています

「MySQL IN句って何ができるのだろう」

「MySQL IN句の使用方法を知りたい」

「MySQL IN句の具体的な使用例が見たい」

✔当記事で学べること

当記事では、MySQL IN句の基本から、より高度な使い方まで、具体的な例を通じて詳細に説明します。

ぜひ最後までご覧ください。

MySQLとIN句の基本

こちらでは、MySQLにおけるIN句の基本的な概念と使い方についてお伝えしていきます。


IN句の理解は、データベース操作の効率向上や複雑なクエリの作成に役立つでしょう。

MySQLの概要とIN句の紹介

MySQLは、世界で最も人気のあるオープンソースのリレーショナルデータベース管理システムのひとつです。

IN句は、指定したリストの中から一致するものを検索するための条件式として使用されます。

これにより、複数の値を対象としたクエリが簡潔に書けるのです。

「MySQL IN」の基本的な使い方

基本的な形としては以下のようになります。

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

例えば、’apple’, ‘banana’, ‘cherry’の3つのフルーツ名を持つレコードを検索する場合は、次のように書けます。

SELECT * FROM fruits
WHERE name IN ('apple', 'banana', 'cherry');

「MySQL IN」の詳細な使用方法

こちらでは、「MySQL IN」のさらに詳細な使用方法と、実際のSQLサンプルを通してその使い方を確認します。

複数条件の指定- IN句とWHERE句の使用例

複数の条件を設定する場合、WHERE句とIN句を組み合わせることで効率的にクエリを実行できます。

以下は、’apple’または’banana’という名前のフルーツを売っている店を検索する例です。

SELECT store_name FROM stores
WHERE fruit_name IN ('apple', 'banana');

関連するSQLサンプルでのIN句の確認

例として、顧客テーブルと注文テーブルを利用します。

以下は、特定の顧客IDを持つ顧客が注文した商品を検索する場合の例です。

SELECT product_name FROM orders
WHERE customer_id IN 
(SELECT customer_id FROM customers WHERE customer_name = 'John Doe');

OR演算子を利用した「IN」のSQLサンプル例

IN句は、基本的にOR演算子の短縮形として使えます。

以下の2つのクエリは、同じ結果を返すものです。

-- IN句を使用
SELECT * FROM fruits WHERE name IN ('apple', 'banana');
-- OR演算子を使用
SELECT * FROM fruits WHERE name='apple' OR name='banana';

サブクエリを使用した「MySQL IN」の活用

こちらでは、サブクエリとともにIN句を使用する方法を詳しく学びます。

サンプルと共に学ぶ:サブクエリとIN句の基本構文

サブクエリを使用することで、主クエリの実行前に一時的な結果セットを生成して、その結果を主クエリで利用できます。

以下は、特定の条件を満たす商品のカテゴリIDを取得し、それを使用して商品のリストを取得する例です。

SELECT product_name, category_id FROM products
WHERE category_id IN 
(SELECT category_id FROM categories WHERE condition = 'specific_value');

サブクエリで拡張されたINという新境地

サブクエリを使用したIN句は、特定の条件に基づいて一連の値を動的に取得し、それを主クエリで利用できます。

静的なリストではなく、変動するデータに対応する柔軟なクエリを作成できるのがメリット。

とくに大量のデータを扱う場合や、定期的なレポート作成などでこの手法は非常に有効です。

「MySQL NOT IN」の活用方法

こちらでは、IN句の逆の機能であるNOT IN句の使用方法に焦点を当てて説明します。

NOT IN句を使った条件付き抽出法

NOT IN句は、指定したリストの値と一致しないレコードを検索する場合に使用するもの。

例えば、’apple’, ‘banana’, ‘cherry’以外のフルーツ名を持つレコードを検索する場合は次のように書けます。

SELECT * FROM fruits
WHERE name NOT IN ('apple', 'banana', 'cherry');

NOT IN句の使用方法–SQLサンプルとともに学びましょう

注文テーブルから、特定の商品IDのリストに含まれない商品を取得する場合の例です。

SELECT product_name FROM orders
WHERE product_id NOT IN (1, 2, 3);

まとめ

当記事では、MySQLのIN句について学習してきました。

IN句はMySQLだけでなく、ほかの多くのリレーショナルデータベースシステムでもサポートされています。

この機能を理解し、マスターすることで、データベース操作の幅が広がり、効率が向上するでしょう。

ぜひ手を動かし、触れてみながら、IN句の良さを実感してみてください。

モバイルバージョンを終了