複数の値に一致するデータに絞り込もう

列 A の値が 1 もしくは 10 もしくは 12 のいずれかに一致するレコードといった、特定の列の値が特定のいずれかの値に一致する行のみに絞り込む方法を学びます。

特定の列について、特徴的な値を持つレコードだけに絞り込みたい場合に有用です。

例えば、居住国(country)が日本・アメリカ・イタリアのデータのみに絞り込みたい場合などです。

書き方

SELECT * FROM <テーブル名> WHERE 列名 IN (値1, 値2, 値3, ..., 値n);

書き方の説明

特定の列の値が特定のいずれかの値に一致する行のみに絞り込みたい場合、IN (複数の値をカンマで区切ったもの) を使います。

例えば、居住国ID(country_id) が 100 もしくは 200 もしくは 300 のデータに絞り込みたい場合、WHERE country_id IN (100, 200, 300) となります。

IN のあとに指定する括弧は必ず必要です。

商品情報が入っている products テーブルについて、 id が 2 もしくは 3のデータに絞り込みたい場合

SELECT * FROM products WHERE id IN (2, 3);

練習

試しに、SELECT 文で products テーブルでINを使ってみましょう!

次のSQLを実行すると、price が 2000 もしくは 4000 のデータだけに絞り込めます。

問題

sales というテーブルがあります。この sales というテーブルのうち、user_id が 500・770・870のデータを取得する SQL 文を書いてみましょう。

答え合わせ

正解を見る
正解:SELECT * FROM sales WHERE user_id IN (500, 770, 870);
解説:user_idが特定の値に一致するデータのみに絞り込みたいので、INを用いて WHERE user_id IN (500, 770, 870) と表現します。