IN の使い方

候補のどれかに一致する

書き方

列 IN (値, 値, …)
列 IN (SELECT …)

OR を並べる代わりに使えます。NOT IN は候補に NULL があると何も返らない点に注意。

よく使うオプション

オプション意味
IN (値, 値, …)候補のどれかと等しい
NOT IN (…)候補のどれとも等しくない
IN (SELECT …)副問い合わせの結果を候補にする

例

SELECT name FROM employees WHERE dept_id IN (1, 3);

部署 1 か 3 の社員を出します。dept_id = 1 OR dept_id = 3 と同じ意味です。

SELECT id, status FROM orders WHERE status IN ('new', 'paid', 'sent');

状態が 3 つのどれかの注文を出します。OR を並べるより短く書けます。

SELECT name FROM customers WHERE id IN (SELECT customer_id FROM orders WHERE total >= 10000);

1 万円以上の注文をしたことのある客を出します。候補を別の問い合わせで作れます。

SELECT name FROM customers WHERE city NOT IN ('東京', '大阪');

東京でも大阪でもない町の客を出します。

よくある間違い・注意

  • NOT IN の候補に NULL が 1 つでもあると、1 行も返りません。副問い合わせで NULL が出そうなときは NOT EXISTS を使います。
  • city が NULL の行は、IN にも NOT IN にも合いません。

実際に打って練習する

SQL コースの Lv10「候補から選ぶ IN」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

SQL 構文一覧(使い方と例)へ戻る