SQL IN

IN ( 値1, 値2, 値3… )

はじめに

IN は WHERE句の中で使われ
文字どおり カッコ () の「中に」探したい複数の値をコンマで区切って並べるだけ!

INを使わないと

SELECT * FROM product
WHERE 商品名='”ドリップコーヒー” OR 商品名=”カフェミスト” OR 商品名=”アイスコーヒー”

とひとつひとつカラム名と値を書いていかなければなりません。面倒ですね。

INを使うと

SELECT * FROM product
WHERE 商品名 IN (“ドリップコーヒー”, “カフェミスト”,”アイスコーヒー”)

こんなにすっきり!

 テーブル名: product
  商品番号 カテゴリー 商品名 サイズ 価格(円) 販売日
1 P1001 コーヒー ドリップコーヒー – ダークロースト ショート 290 2021/01/01
2 P1002 コーヒー ドリップコーヒー – ダークロースト トール 330 2021/02/01
3 P1003 コーヒー ドリップコーヒー – ダークロースト グランデ 370 2021/03/01
4 P1004 コーヒー ドリップコーヒー – ダークロースト ベンティ 410 2021/04/01
5 P1010 コーヒー カフェミスト ショート 340 2021/01/01
6
P1011
コーヒー カフェミスト トール
380
2021/02/01
7 P1012 コーヒー カフェミスト グランデ 420 2021/03/01
8 P1013 コーヒー カフェミスト ベンティ 460 2021/04/01

便利な例

否定形

NOT INの前にをつけると渡した値以外を探してきて、と言う意味になります
たとえば下記の例だと

SELECT * FROM product WHERE 商品名 NOT IN (“ドリップコーヒー”, “カフェミスト”,”アイスコーヒー”)

商品名が ドリップコーヒー, カフェミスト, アイスコーヒー以外を探して
と言うコマンドになります

実践

実務で使うケースとして、IN の中にさらにクエリを入れる方法があります

SELECT * FROM product WHERE 商品名
IN ( SELECT 商品名 FROM sales WHERE 売上 >= 500 )

productとsalesの2つのテーブルから「500円以上の売上げがあった商品情報を探して」というコマンドになります

2つ構文があって難しそうにみえますが、ひとつずつみていきましょう

まずは IN カッコの中から
SELECT 商品名 FROM sales WHERE 売上 >= 500
sales テーブルから売上が500円以上の商品名を探してきてというコマンドになります

「商品名」が返ってくるので、“ドリップコーヒー”, “カフェミスト”, ”アイスコーヒー” のような結果になります
これって最初にやった IN の中身と同じですよね

続いて外側をみていきましょう
SELECT * FROM product WHERE 商品名 IN
なので、返ってきた商品名をpruductテーブルから検索して、という事になり

チェックポイント

IN の内側のクエリで返す値は1種類 & 外側のカラムと一致する必要があります
IN ( SELECT * FROM sales WHERE 売上 >= 500 ) としてしまうとデータベースがどのカラムと一致させたらよいか分からなくなってしまうので
商品名 IN ( SELECT 商品名 FROM sales WHERE 売上 >= 500 ) のようにそろえてあげましょう

クイズ


下記のテーブルから商品番号が、P1001、P1003、P10010、P10012で価格が¥300以上の商品名をINを使って探してみてください



 テーブル名: product
  商品番号 カテゴリー 商品名 サイズ 価格(円) 販売日
1 P1001 コーヒー ドリップコーヒー – ダークロースト ショート 290 2021/01/01
2 P1002 コーヒー ドリップコーヒー – ダークロースト トール 330 2021/02/01
3 P1003 コーヒー ドリップコーヒー – ダークロースト グランデ 370 2021/03/01
4 P1004 コーヒー ドリップコーヒー – ダークロースト ベンティ 410 2021/04/01
5 P1010 コーヒー カフェミスト ショート 340 2021/01/01
6
P1011
コーヒー カフェミスト トール
380
2021/02/01
7 P1012 コーヒー カフェミスト グランデ 420 2021/03/01
8 P1013 コーヒー カフェミスト ベンティ 460 2021/04/01

あわせてご覧ください

SQL UPDATE

SQL

SQL Tips

Read More

SQL TRUNC

SQL

SQL Tips

Read More

EXCEL COUNTIF

Excel

Exce COUNTIFの使い方を分かりやすい例で紹介

Read More