SQL WHERE IN – 例を使って説明

SQL WHERE IN – 例を使って説明

データベース内のデータを手動でフィルタリングすることにうんざりしていて、複数の値を持つデータをフィルタリングするより効率的な方法を探していますか? SQL WHERE IN が必要なソリューションになるかもしれません。

SQL データベースを使用している場合は、おそらく WHERE IN 演算子に遭遇したことがあるでしょう。この演算子は、WHERE 句で複数の値を指定するために使用され、データをより正確にフィルターできるようになります。

この演算子を使用すると、テーブル内の列と照合する値のリストを指定できます。このリストはハードコード化することも、サブクエリによって生成することもできるため、データをフィルタリングする方法に大きな柔軟性が与えられます。

SQL WHERE IN – 例を使って説明

たとえば、IN 演算子を使用して、都市の特定のリストからすべての顧客を検索したり、製品 ID のセットに基づいて結果をフィルターしたりできます。

WHERE IN 演算子を使用する利点の 1 つは、クエリをより効率的にできることです。複数の OR 条件の代わりに値のリストを使用すると、データベースで実行する必要がある処理の量を減らすことができます。

これは、小さな最適化でもパフォーマンスに大きな違いが生じる可能性がある、大規模なデータセットや複雑なクエリを操作する場合に特に重要です。

目次

SQLのWHERE IN句とは何ですか?

SQL WHERE IN 句は、値のリストに基づいてデータをフィルタリングするために使用されます。複数の OR 条件の短縮表現を使用して、WHERE 句に複数の値を指定できます。SQL Server 、PostgreSQL、MYSQL、Oracleの WHERE IN 句の構文は次のとおりです。

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

上記の SELECT ステートメントを考慮すると、WHERE IN 句を使用すると、指定された列がリスト内のいずれかの値と一致するデータをテーブルから取得できます。これは、検索する特定の値セットがある場合にデータをフィルタリングするのに便利な構文です。

SQL WHERE IN 句はどのように機能しますか?

この句は、指定された列をリスト内の各値と比較することによって機能します。列がリスト内のいずれかの値と一致する場合、その行は結果セットに含まれます。

「customers」という名前のテーブルがあり、「customer_id」、「customer_name」、「country」の 3 つの列で構成されているとします。米国、カナダ、メキシコのすべての顧客を取得したいと考えています。次のクエリは、WHERE IN 句がどのように使用されるかを示します。 SELECT customer_id, customer_name, country FROM Customers WHERE country IN ('USA','Canada','Mexico');

SQL WHERE IN 句の例

可能な値のリストに基づいて結果をフィルタリングする場合は、SQL WHERE IN 句を使用できます。この句を使用すると、特定の列が値のセットの 1 つに一致する行を選択する簡単な方法が提供されます。

この条項の使用例を 5 つ示します。

  1. 単一値を指定した SQL WHERE IN 句の使用

ステータス列が「公開済み」に設定されているテーブル内のすべての行を選択するとします。これは、次の SQL ステートメントを使用して実行できます。

SELECT * 
FROM my_table 
WHERE status IN ('published');

これにより、ステータス列が「公開済み」に設定されているすべての行が返されます。

  1. 複数の値を持つ SQL WHERE IN 句の使用

次に、ステータス列が「公開済み」または「下書き」に設定されているすべての行を選択するとします。次の SQL ステートメントを使用できます。

SELECT * 
FROM my_table 
WHERE status IN ('published', 'draft');

これにより、ステータス列が「公開済み」または「下書き」に設定されているすべての行が返されます。また、カンマで区切って、必要なだけ値を追加できます。

  1. 削除ステートメントで SQL WHERE IN 句を使用する

次のデータを含む「customers」というテーブルがあるとします。

SQL WHERE IN – 例を使って説明

「City」列の複数の値に基づいてこのテーブルから行を削除するには、次のクエリに示すように、SQL WHERE IN 句を DELETE ステートメントとともに使用できます。

DELETE FROM customers
WHERE City IN ('New York', 'Chicago', 'Miami');

このステートメントは、「City」列名がリスト内のいずれかの値 (「New York」、「Chicago」、「Miami」) と一致するすべての行を「customers」テーブルから削除します。上の例では、テーブルから 1 行目、3 行目、5 行目が削除されます。

DELETE ステートメントで WHERE IN 句を使用する場合は、正しいデータを削除していることを確認して間違いを避けるように細心の注意を払う必要があることに注意してください。データベース全体でクエリを実行する前に、データの小さなサブセットでクエリをテストすることをお勧めします。

  1. WHERE IN 演算子と SQL WHERE 句を使用して数値に基づいてデータをフィルタリングする

SELECT *
FROM customers
WHERE age IN (25, 30, 35)
AND city = 'London';

このクエリは、「customers」テーブルから、age 列に数値 25、30、または 35 が含まれ、city 列に値「London」が含まれるすべての行を返します。

WHERE IN 演算子は、1 つの列に複数の値のみを指定できる論理演算子であることに注意してください。SELECT ステートメントはテーブルからデータを取得するために使用され、WHERE 句は特定の条件に基づいてデータをフィルターするために使用されます。

この例では、クエリは「customers」テーブルから、年齢列が指定された数値のいずれかに一致し、都市列が値「London」に一致する行を返します。このクエリで使用される列名は「age」と「city」で、クエリ対象のテーブルは「customers」です。

  1. WHERE IN を SELECT ステートメントおよび IN 演算子とともに使用します。

SELECT *
FROM orders
WHERE customer_id IN (
    SELECT customer_id
    FROM customers
    WHERE country = 'USA'
);

この例では、サブクエリを使用して、国列に値「USA」が含まれる「customers」テーブルからすべての顧客 ID を取得しています。次に、WHERE IN 演算子を使用して、これらの顧客 ID に基づいて「注文」テーブルをフィルター処理します。

このクエリは、customer_id 列がサブクエリによって返された顧客 ID の 1 つと一致する、orders テーブルのすべての行を返します。

WHERE IN 演算子は、列を値のリストと比較できる比較演算子であることに注意してください。この場合、customer_id 列をサブクエリによって返された顧客 ID のリストと比較します。

この演算子とサブクエリを使用すると、特定の基準に基づいてデータをフィルタリングし、ニーズを満たすデータのみを取得できます。

SQL WHERE IN 句を使用する 2 つの主な利点?

  1. クエリのパフォーマンスの向上

この句は、クエリのパフォーマンスに関して最大​​の利点の 1 つを提供します。複数の値に基づいてデータをフィルタリングする場合、この句を使用すると、OR 演算子を使用して複数の WHERE 句を記述するよりもはるかに効率的かつ高速になります。これは、データベース エンジンがクエリ実行プランを最適化し、必要なデータを効率的に取得できるためです。

たとえば、「customers」テーブルを使用した次のSQLクエリを考えてみましょう。ここでは、国に基づいて顧客の詳細を特定しようとしています。

SELECT CustomerID,CustomerName,phone,Email,CustomerCounter
FROM customers WHERE country='USA' 
			OR country='Canada' 
			OR country='Mexico' ;

SQL WHERE IN – 例を使って説明

 SELECT CustomerID,CustomerName,phone,Email,CustomerCounter
FROM customers 
WHERE country IN ('USA', 'Canada', 'Mexico'); 

SQL WHERE IN – 例を使って説明

上の例に見られるように、この句を使用するとクエリのパフォーマンスが大幅に向上し、時間をさらに節約できます。はるかに大規模なデータセットで OR 演算子を使用して国を次々に選択するよりも、すべての国を一度に選択する方が簡単です。

  1. 簡素化されたクエリの作成

SQ L WHERE IN 句を使用するもう 1 つの大きな利点は、複雑なクエリを作成するプロセスを簡素化できることです。複数の値に基づいてデータをフィルタリングする必要がある場合、OR 演算子を使用して複数の WHERE 句を使用すると、すぐに煩雑になり、管理が難しくなる可能性があります。

この句を使用すると、フィルタリングするすべての値を 1 つのステートメントで指定できるため、クエリの読み取りと管理が容易になります。これは、大規模なデータセットを操作する場合や、複数の条件を含む複雑なクエリを作成する必要がある場合に特に役立ちます。

たとえば、次の SQL クエリについて考えてみましょう。

SELECT *
FROM products 
WHERE category='Electronics' AND (brand='Apple' OR brand='Samsung' OR brand='Sony') 
SELECT *
FROM products 
WHERE category='Electronics' AND brand IN ('Apple', 'Samsung', 'Sony') 

上記の例の両方のクエリでは、Apple、Samsung、Sony のすべての「エレクトロニクス」製品が返されます。

ただし、後者のクエリで見られるように WHERE IN 句を使用すると、複雑なクエリを使用するプロセスが簡略化され、読みやすく理解しやすくなります。

さらに、エラーを回避し、時間を短縮するのにも役立ちます。

私たちの最後の言葉

おめでとう!SQL WHERE IN 句を使用して、値のリストに基づいてデータをフィルターする方法がわかりました。学んだことを評価してみましょう。

WHERE IN を使用すると、さまざまな SQL クエリを簡素化し、より効率的に書き込まれた出力を取得するために作成できます。

WHERE IN は複数の OR 条件の短縮形であるため、OR ステートメントの長いリストを置き換えることができることに注意してください。さらに、この句をサブクエリとともに使用すると、別のクエリの結果に基づいてデータをフィルタリングできます。

WHERE IN を使用する場合は、比較する値のデータ型を考慮することが重要です。データ型が一致しない場合は、正確な比較を行うために型変換関数を使用する必要がある場合があります。

全体として、SQL WHERE IN 句は、SQL クエリでデータをフィルタリングするための強力かつ基本的な構文です。この句をマスターすると、SQL コードのパフォーマンスと読みやすさが向上し、長期的な作業と保守が容易になります。


Python における Self とは: 実際の例

Python における Self とは: 実際の例

Python における Self とは: 実際の例

RでRDSファイルを保存してロードする方法

RでRDSファイルを保存してロードする方法

R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。

最初の N 営業日の再考 – DAX コーディング言語ソリューション

最初の N 営業日の再考 – DAX コーディング言語ソリューション

この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。

LuckyTemplates のフィルター コンテキストの概要

LuckyTemplates のフィルター コンテキストの概要

この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。

LuckyTemplates を使用したビジネス レポート

LuckyTemplates を使用したビジネス レポート

これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて