1. IN 句とは?

IN 句は、SQL の WHERE句で使用される条件の一つで、複数の値のいずれかに一致するデータを取得するために使用されます。IN句は使用頻度が多いのでぜひとも覚えておきましょう。

基本構文:

SELECT 列名 FROM テーブル名 WHERE 条件列 IN (値1, 値2, 値3, ...);

2. IN 句の使用例

以下の usersテーブルを使用して例を示します。

id name age
1 Alice 25
2 Bob 30
3 Charlie 35
4 David 40
5 Eve 45

2.1. 単純な IN 句の使用例

以下の例では、 usersテーブルから id1, 3, 5のユーザーを取得します。

SELECT * FROM users WHERE id IN (1, 3, 5);

実行結果:

id name age
1 Alice 25
3 Charlie 35
5 Eve 45

2.2. 文字列データでの使用

文字列データの検索にも IN 句は使用できます。

SELECT * FROM products WHERE category IN ('Electronics', 'Clothing', 'Books');

3. IN 句と NOT IN 句

NOT IN 句を使用すると、指定された値 以外を取得できます。

SELECT * FROM users WHERE id NOT IN (1, 3, 5);

実行結果:

id name age
2 Bob 30
4 David 40

このクエリは、 id1, 3, 5 以外のユーザーを取得します。

4. IN 句と OR の違い

IN句を使用すると、 ORを使った場合よりも SQL の可読性が向上し、処理速度も向上する場合があります。

-- OR を使用した場合(冗長な例)

SELECT * FROM users WHERE id = 1 OR id = 3 OR id = 5;

-- IN 句を使用(簡潔な記述)

SELECT * FROM users WHERE id IN (1, 3, 5); 

練習問題:IN 句と NOT IN 句の理解

以下の問題に回答してください。各問題には、必要な見本のテーブルを用意しています。


問題 1: IN 句の基本

以下の usersテーブルがあります。

users テーブル

id name age
1 Alice 25
2 Bob 30
3 Charlie 35
4 David 40
5 Eve 45

以下の SQL を実行したときに、どのような結果になるか答えてください。

SELECT * FROM users WHERE id IN (2, 4);

問題 2: NOT IN 句

以下の usersテーブルを使い、 id1, 3, 5以外のデータを取得する SQL を記述してください。

users テーブル

id name age
1 Alice 25
2 Bob 30
3 Charlie 35
4 David 40
5 Eve 45

問題 3: 文字列データの IN 句

以下の productsテーブルを使い、 category'Electronics'または 'Clothing'のデータを取得する SQL を記述してください。

products テーブル

id name category
1 Laptop Electronics
2 T-shirt Clothing
3 Book Books
4 Headphones Electronics
5 Jacket Clothing

問題 4: OR と IN 句

以下の SQL 文を IN句を使って簡潔に書き直してください。

SELECT * FROM users WHERE id = 1 OR id = 3 OR id = 5;

users テーブル

id name age
1 Alice 25
2 Bob 30
3 Charlie 35
4 David 40
5 Eve 45

問題 5: NOT IN 句の使用

以下の productsテーブルを使用し、 category'Books'以外のデータを取得する SQL を記述してください。

products テーブル

id name category
1 Laptop Electronics
2 T-shirt Clothing
3 Book Books
4 Headphones Electronics
5 Jacket Clothing

終わりに:
この問題を解くことで、IN 句と NOT IN 句の理解が深まるはずです。