本記事概要
対象者
- SQLでのデータ分析を勉強されている方
- 特に非エンジニアのマーケティング担当者やPMの方
- 【SQL練習】サンプルデータベースを用意するでMySQL公式のデータベースをローカルに作成されている方には特におすすめです。
本記事の目的
- IN句を使えるようになる!
筆者
- Web系企業のインハウスマーケター(https://twitter.com/okdddsho5)
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」はすべてのレコードを見に行ってしまいますので、重い処理になりがちなので注意が必要です。
そのためサブクエリを使って事前にある程度レコード数を少なくしたテーブルから使用するなどの配慮が必要になります。
では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)