INとNOT INの使い方| プログラミングの砂場

プログラミング学習やタイピング練習に役立つツールを公開しているサイトです。

INとNOT INの使い方

ここでは、複数の値を一度に指定してデータを取得することができる「IN」と「NOT IN」についてその使い方を見てみましょう。

目次

1. はじめに

ここでは、商品テーブル(Shouhin)を使って各種条件を指定してみましょう。

まずは、Shouhinの内容を確認してください。

SELECT * FROM Shouhin;
shouhin_id name name_kana category_id price
1 アスパラガス あすぱらがす 1 256
2 かぼちゃ かぼちゃ 1 300
3 キャベツ きゃべつ 1 128


Shouhinの全データ(全行)が取得されました。

このデータに対して、INとNOT INを指定して行を絞り込んでいきます。

2. INとNOT INの使い方

「IN」、「NOT IN」を使うと、列に対して複数の値を一度に指定することができます。

下で、それぞれの使い方を見てみましょう。

2-1. IN

「IN」は、比較演算子「=」を使った個々の条件を論理演算子「OR」で繋いだのと同じ働きをします。

例えば、「この値と、あの値と、その値のデータを取得する」といった場合に便利です。

構文

SELECT 列名 FROM テーブル名 WHERE 列名 IN ( 値 );

「IN」に渡す値は、「,(カンマ)」で区切ることで複数指定できます。

下は、商品IDが1,10,20の商品を取り出すSQLです。

SELECT
    *
FROM
    Shouhin
WHERE
    shouhin_id IN ( 1, 10, 20 );
shouhin_id name name_kana category_id price
1 アスパラガス あすぱらがす 1 256
10 ほうれん草 ほうれんそう 1 100
20 グレープフルーツ ぐれーぷふるーつ 2 150

商品IDが1,10,20の商品を取り出せました。

このように「IN」は、指定した値とマッチした行を取り出してくれます。

下は、「IN」を比較演算子「=」と論理演算子「OR」で置き換えた場合のSQLです。

SELECT
    *
FROM
    Shouhin
WHERE
    shouhin_id=1 OR shouhin_id=10 OR shouhin_id=20;
shouhin_id name name_kana category_id price
1 アスパラガス あすぱらがす 1 256
10 ほうれん草 ほうれんそう 1 100
20 グレープフルーツ ぐれーぷふるーつ 2 150

「=」と「OR」を使って「IN」と同じ結果を得られました。

2-2. NOT IN

「NOT IN」は、比較演算子「<>(!=)」を使った個々の条件を論理演算子「AND」で繋いだのと同じ働きをします。

例えば、「この値と、あの値と、その値以外のデータを取得する」といった場合に便利です。

構文

SELECT 列名 FROM テーブル名 WHERE 列名 NOT IN ( 値 );

下は、商品IDが「1,2,3以外」の商品を取り出すSQLです。

SELECT
    *
FROM
    Shouhin
WHERE
    shouhin_id NOT IN ( 1, 2, 3 );
shouhin_id name name_kana category_id price
4 キュウリ きゅうり 1 150
5 トマト とまと 1 328
6 ナス なす 1 130


商品IDが「1,2,3以外」の商品を取り出せました。

このように、「NOT IN」は、指定した値以外の行(値とマッチしなかった行)を取り出してくれます。

「NOT IN」は、下の論理演算子「AND」を使ったSQLと同じ動作をします。

下は、「NOT IN」を比較演算子「!=(<>)」と論理演算「AND」で置き換えた場合のSQLです。

SELECT
    *
FROM
    Shouhin
WHERE
    shouhin_id != 1 AND shouhin_id != 2 AND shouhin_id != 3;
shouhin_id name name_kana category_id price
4 キュウリ きゅうり 1 150
5 トマト とまと 1 328
6 ナス なす 1 130


「!=(<>)」と「AND」を使って「NOT IN」と同じ結果を得られました。

まとめ

「IN」と「NOT IN」についてその使い方を確認しました。

「IN」と「NOT IN」は、列に対して複数の値を一度に指定することができます。

「IN」は、比較演算子「=」を使った個々の条件を論理演算子「OR」で繋いだのと同じ働きをします。

「NOT IN」は、比較演算子「<>(!=)」を使った個々の条件を論理演算子「AND」で繋いだのと同じ働きをします。

一見、使い道がなさそうな「IN」と「NOT IN」ですが、あとに登場する「副問い合わせ(サブクエリ)」と組み合わせることで威力を発揮しますので覚えておきましょう。


次は、「BETWEENの使い方」についてです。


TOP