複数の値に一致するレコードを取り出すSQLを紹介します。
複数の値に一致するレコードを取り出す場合は、IN演算子を用いると効果的です。
inの後方には問い合わせ文を指定することもできます。
次のテーブルを用意します。
id | model | name | category | price |
---|---|---|---|---|
1 | C-XM01 | モーダンチェア | チェア | 56000 |
2 | X-XD05 | ラージデスク | テーブル | 87000 |
3 | A-DA40 | ラウンドダイニングチェア | チェア | 28000 |
4 | O-XX100 | ナチュラルオフィス | チェア | 13800 |
5 | R-D400 | ラウンドダイニングテーブル | テーブル | 128000 |
6 | R7000 | ウッドキャビネット | その他 | 32000 |
7 | B-200 | リネンベッド | ベッド | 184500 |
8 | B-250 | ホワイトダブルベッド | ベッド | 324850 |
9 | W-80 | ワーキングチェア | チェア | 45000 |
10 | EG-10X | エルゴノミクスデスク | テーブル | 88500 |
以下のSQLを実行します。
select * from products where category in ('チェア', 'その他')
where category in ('チェア', 'その他')
上記のin演算子では、productsテーブルのcategory列の値が、'チェア'か'その他'の行であるものを検索します。
上記のSQLを実行すると以下の結果となります。
id | model | name | category | price |
---|---|---|---|---|
1 | C-XM01 | モーダンチェア | チェア | 56000 |
3 | A-DA40 | ラウンドダイニングチェア | チェア | 28000 |
4 | O-XX100 | ナチュラルオフィス | チェア | 13800 |
6 | R7000 | ウッドキャビネット | その他 | 32000 |
9 | W-80 | ワーキングチェア | チェア | 45000 |
select * from ProductsB where category='チェア' or category='その他'
次のテーブルを用意します。
id | model | name | category | price |
---|---|---|---|---|
1 | C-XM01 | モーダンチェア | チェア | 56000 |
2 | X-XD05 | ラージデスク | テーブル | 87000 |
3 | A-DA40 | ラウンドダイニングチェア | チェア | 28000 |
4 | O-XX100 | ナチュラルオフィス | チェア | 13800 |
5 | R-D400 | ラウンドダイニングテーブル | テーブル | 128000 |
6 | R7000 | ウッドキャビネット | その他 | 32000 |
7 | B-200 | リネンベッド | ベッド | 184500 |
8 | B-250 | ホワイトダブルベッド | ベッド | 324850 |
9 | W-80 | ワーキングチェア | チェア | 45000 |
10 | EG-10X | エルゴノミクスデスク | テーブル | 88500 |
modelの値で検索します。以下のSQLを実行します。
SELECT * FROM dbo.products WHERE model IN ('A-DA40', 'R-D400', 'B-250');
WHERE model IN ('A-DA40', 'R-D400', 'B-250');
上記のin演算子では、productsテーブルのmodel列の値が、'A-DA40', 'R-D400', 'B-250' のレコードを検索します。
上記のSQLを実行すると以下の結果となります。
id | model | name | category | price |
---|---|---|---|---|
3 | A-DA40 | ラウンドダイニングチェア | チェア | 28000 |
5 | R-D400 | ラウンドダイニングテーブル | テーブル | 128000 |
8 | B-250 | ホワイトダブルベッド | ベッド | 324850 |
次のテーブルを用意します。
id | name | price | category |
---|---|---|---|
1 | Penguin | 250 | Bird |
2 | Bear | 1050 | Mammal |
3 | Duck | 150 | Bird |
4 | Camel | 550 | Mammal |
5 | Owl | 185 | Bird |
6 | Whale | 880 | Mammal |
以下のSQLを実行します。priceが 150, 880, 1050 のレコードを選択します。
select * From ProductsA where price in (150,880,1050)
SQLの実行結果は次の通りです。
id | name | price | category |
---|---|---|---|
2 | Bear | 1050 | Mammal |
3 | Duck | 150 | Bird |
6 | Whale | 880 | Mammal |
次のテーブルを用意します。
id | model | name | category | price |
---|---|---|---|---|
1 | C-XM01 | モーダンチェア | チェア | 56000 |
2 | X-XD05 | ラージデスク | テーブル | 87000 |
3 | A-DA40 | ラウンドダイニングチェア | チェア | 28000 |
4 | O-XX100 | ナチュラルオフィス | チェア | 13800 |
5 | R-D400 | ラウンドダイニングテーブル | テーブル | 128000 |
6 | R7000 | ウッドキャビネット | その他 | 32000 |
7 | B-200 | リネンベッド | ベッド | 184500 |
8 | B-250 | ホワイトダブルベッド | ベッド | 324850 |
9 | W-80 | ワーキングチェア | チェア | 45000 |
10 | EG-10X | エルゴノミクスデスク | テーブル | 88500 |
id | category |
---|---|
1 | チェア |
2 | ベッド |
上記のテーブルにおいて、以下のSQLを用います。
select * from products where category in (select category from target)
下記のin演算子では、targetテーブルのcategory列に含まれる値が、productsテーブルのcategoryに含まれるものを検索します。
where category in (select category from target)
上記のSQLを実行すると以下の結果となります。
id | model | name | category | price |
---|---|---|---|---|
1 | C-XM01 | モーダンチェア | チェア | 56000 |
3 | A-DA40 | ラウンドダイニングチェア | チェア | 28000 |
4 | O-XX100 | ナチュラルオフィス | チェア | 13800 |
7 | B-200 | リネンベッド | ベッド | 184500 |
8 | B-250 | ホワイトダブルベッド | ベッド | 324850 |
9 | W-80 | ワーキングチェア | チェア | 45000 |