SQLのIN句とは?複数の条件指定をまとめて行うためのIN句の使い方
IN句は、複数の条件指定をまとめて行うために使用する命令です。
本記事では、IN句とは何か、また、IN句/NOT IN句の具体的な使い方について解説します。
1.IN句とは
IN句は、複数の条件を指定して検索を行う場合に使用するクエリです。SQLで複数の条件を指定してデータを抽出する際、IN句を使用せずにデータ抽出する場合、以下の通りとなります。例)ユーザー(user)テーブルの名前(name)が「山田」か「佐藤」の要素を取得する場合[IN句を使用しない場合]
SELECT * FROM user WHERE name = ‛山田‛ OR name = ‛佐藤‛;
これでも対象のデータは抽出できますが、指定する要素数が増えるにつれ条件文が冗長化してしまいます。ここで複数の条件指定をより短い条件文でまとめて行うために用いるのがIN句となります。
2.IN句の使い方
それでは実際にIN句を使ってみましょう。SQLで複数の条件を指定してデータを抽出する際、IN句を使用してデータ抽出する場合、以下の通りとなります。例)ユーザー(user)テーブルの名前(name)が「山田」か「佐藤」の要素を取得する場合[IN句を使用する場合]
SELECT * FROM user WHERE name IN(‛山田‛, ‛佐藤‛);
上記の通り、IN句を使用しない場合と比較すると、条件文が短くなっています。「“山田“, “佐藤“, “田中“…」と指定する要素数が増えるにつれ、IN句を使用しない場合と比較した時の条件文の短さはより顕著になっていきます。
3.IN句の否定形:NOT IN句
複数の条件を指定してデータを抽出する際、指定した値に該当しない要素を抽出する場合はNOT IN句を使います。実際にNOT IN句を使用したクエリの例は以下の通りとなります。例)ユーザー(user)テーブルの中から名前(name)が「山田」か「佐藤」を含まないレコードを取得する場合
SELECT * FROM user WHERE name NOT IN(‛山田‛, ‛佐藤‛);
上記の例では、「山田」と「佐藤」を含まないレコード全てを取得することが可能となります。ただし、膨大なレコード数を管理している状況下では、NOT IN句を用いた処理は重たくなってしまいます。これは内部でデータの全検索を行っているためです。レコード数が多い中でNOT IN句を使用する際はこうした点に注意が必要です。
4.まとめ
以上、IN句とは何か、また、IN句/NOT IN句の具体的な使い方について解説してきました。複数の条件を指定してデータを抽出する場合は是非使ってみてください。
コメント