目次
本記事概要
対象者
- SQLを使ったデータ分析を勉強されている方
- 特に非エンジニアのマーケティング担当者やPMの方
本記事の目的
- IN句を使えるようになる!
筆者
- コインチェックという暗号資産の会社でマーケティング部長をしてます(https://twitter.com/sampling2x)
IN句の使い方解説(否定,複数)where in~
countryテーブル概要
まずは今回使用するcountryテーブルの中身を見てください。
IDと国名が入っている、非常にシンプルなテーブルです。
合計で109の国が格納されてます。

IN句の使い方
では上記のcountryテーブルから「Australia」「Japan」「Spain」を抽出したい場合どう書きますか?
もしIN句を知らなければ、

のように「or」で条件を繋げる必要があります。
もちろんこれで問題ないのですが、冗長ですよね。
そこでこの複数の「or」を一つにまとめる時に使う関数がIN句になります。
もちろん結果は同じになります。
IN句は簡単かつ非常に便利なので頻出です。

IN句(否定)
これも非常に簡単です。
where 該当カラム not in(‘要素1’,’要素2’)
で使うことができます。
ただし「NOT IN」はすべてのレコードを見に行ってしまいますので、重い処理になりがちなので注意が必要です。
そのためWith句を使って、事前にある程度レコード数を少なくしたテーブルから、使用するなどの配慮が必要になります。
With句についても書いているので、ご確認ください。
ではNOT INの具体例として、109の国のうち、「Australia」「Japan」「Spain」の3つを、「NOT IN」を使って、除外した後、COUNTしてみます。

しっかり106となってますね。
おわりに
IN句は非常に便利ですので、覚えておいて損はない構文になります。
ぜひORを複数書き続けるようなタイムロス生活から卒業して、スマートなIN生活を送っていただけると幸いです。
またこのようにSQLの関数について記事を書いているので、合わせてみて行ってください。
■SQLの勉強を始めたばかりの方におすすめ
【SQL入門】データ分析に必須なSQL文とは?基本構文を6つ紹介
■SQL中級者におすすめ
【SQL】Window関数でデシル分析をする
【SQL】CASE式で効率よく集計する(CASE WHEN)