SQL

【SQL】IN句まとめ(複数条件や否定)~where in~

本記事概要

本記事の対象者

・SQLでのデータ分析を勉強されている方
・特に非エンジニアのマーケティング担当者やPMの方
【SQL練習】サンプルデータベースを用意するでMySQL公式のデータベースをローカルに作成されている方には特におすすめです。

本記事の目的

・IN句を使えるようになる!

countryテーブル概要

IDと国名が入っている非常にシンプルなテーブルです。
合計で109の国が格納されてます。

IN句の使い方解説(否定,複数)where in~

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)

 

ABOUT ME
Okada Shogo
某Web系企業でアクセス解析やKPI管理をやってます。主にインハウスマーケターの方に向けて情報発信できればと思っております!