MySQLでIN句を活用しよう!指定したカラムとリストを比較する!
  • facebookページ
  • twitterページ
  • 2020.01.22

    MySQLでIN句を活用しよう!指定したカラムとリストを比較する!

    SQLを記述する際、たびたびWHERE句の中で複数条件を指定したいケースが訪れます。

    そんな時に利用出来るのが今回ご紹介する「IN」句です。

    本記事では、MySQL環境を使用して「IN」句の基本的な使い方をサンプルコードを交えながらご紹介していきたいと思います。

    MySQLのIN句について基本的な使い方を理解しよう

    MySQLでも利用可能なIN句についてまずは基本的な使い方をご紹介していきたいと思います。

    IN句を使ってWHERE句に複数条件を指定しよう

    IN句の使い方はWHERE句で指定したカラムに対し、複数の値の中から一致するデータを抽出します。

    下記はIN句を利用したSQLの基本構文です。

    サンプルSQLはOR演算子を使っても記述することが可能です。

    WHERE句でOR演算子を使う場合、指定する値が多くなるほどSQLが長く読みにくくなりますので、IN句を用いて複数の値を指定する方法がおすすめです。

    サンプルSQLでIN句の使い方を確認しよう

    上記の説明を実際にテーブルから値を取得するサンプルSQLで確認してみましょう。

    サンプル用のテーブルとして「sample_user」というテーブルを用意しました。

    格納されているデータは下記の通りとなります。

    では、実際にIN句を使用してデータを取得してみます。

    今回はidが「1」と「3」のデータを取得したいと思います。

    サンプルSQLを実行した結果が下記の通りとなります。

    指定した値と一致するデータが抽出されていることがご確認頂けます。

    IN句を使用したサンプルSQLをOR演算子を使って書き換えてみよう

    次にサンプルSQLをOR演算子を使って書き換えてみたいと思います。

    サンプルSQLでは指定している値が2つだけのため、大きな負担にはなりませんが指定する値が増えるほどSQLも長くなり煩雑で読みにくいSQLになってしまうため注意が必要です。

    MySQLのIN句でサブクエリを使ってみよう


    IN句は複数の値をリスト形式で条件として設定可能なため、SELECT句で取得した複数の値を条件として指定することも可能です。

    IN句でサブクエリを利用する際の基本構文

    IN句にサブクエリで取得した値を設定する際の基本構文は、FROM句でサブクエリを使用する場合とほとんど同じです。

    注意すべき点としてサブクエリのSELECT句で取得するカラムは1つに限定する必要があります。

    ポテパンダの一言メモ

    「*」を利用して複数カラムを取得することも出来ないため注意が必要です。

    サンプルSQLでサブクエリを利用したIN句の処理内容を確認しよう

    今回のサンプルでは上記で利用していた「sample_user」に加えて「sample_order」というテーブルを使用します。

    テーブルに格納されているデータは下記の通りとなります。

    では実際にサンプルSQLを作成してみましょう。

    今回は「ラーメン」を注文したお客さんの中で「sample_user」テーブルに登録されているユーザーを抽出するSQLを作成しました。

    実行した結果が下記の通りとなります。

    サブクエリでは「ラーメン」を注文したお客さんとして「user_id」が「1」と「4」のデータが取得出来ますが、メインクエリのテーブル「sample_user」には「id=4」のデータは存在しないため、結果として「id=1」のデータのみが表示されていることがご確認頂けます。

    MySQLでもNOT IN句は利用可能


    IN句とセットで説明されるNOT IN句についても触れておきたいと思います。

    IN句ではカラムに指定した複数の値の「いずれかが一致する」データを抽出していました。

    反対にNOT IN句ではカラムに指定した複数の値の「いずれも一致しない」データが抽出されます。

    NOT IN句の基本構文を確認しよう

    NOT IN句の基本構文はIN句と全く同じで取得する内容が正反対のデータとなります。

    WHERE句のカラムに指定した「値」が存在しないデータのみが抽出されます。

    サンプルSQLでNOT IN句の使い方を確認しよう

    では実際にIN句のサンプルSQLをNOT IN句に記述し直して実行してみたいと思います。

    実行した結果が下記の通りとなります。

    NOT IN句で指定した値以外のデータが抽出されていることがご確認頂けます。

    さいごに:MySQL以外でも利用できるIN句の使い方をきちんと理解しておこう

    本記事ではMySQL環境でのサンプルSQLを交えてIN句の使い方をご紹介してきました。

    IN句はSQL構文としてMySQL以外のデータベースでも利用することが可能です。

    IN句を利用することでSQL文をコンパクトで読みやすく記述することが可能となりますので、積極的に活用してみてください。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE