Mysql サブクエリを使ったSELECT文
サブクエリを使って条件を抽出していきます。
サブクエリとは
SQL文の中にSELECT文を埋め込み、抽出条件として利用することを可能としています。
SELECT文の中に、SELECT文が入る「入れ子」になります。
サブクエリは()で囲って使用します。
1 2 3 4 5 6 7 8 9 | SELECT 列名1, 列名2, ... FROM テーブル名 WHERE 列名 = ( SELECT 列名 FROM テーブル名 [WHERE 条件式など] ) |
WHERE以下の()で示した部分がサブクエリです.実行の際にはまずサブクエリが解決され,値が抽出されます.次にメインのクエリが解決され,サブクエリから返された値と等しい値を持つレコードが選択されます.上記ではサブクエリとメインのクエリを「=」で結んでいますが,そのほかにも以下の演算子が使用できます.
比較演算子 | 説明 |
---|---|
= | 等しい |
< | 小さい |
> | 大きい |
<= | 以下 |
>= | 以上 |
<>, != | 等しくない |
サブクエリを使用したSQLサンプル
以下のデータを使用してサブクエリを使って行います。
UserID | Name |
---|---|
1 | 嶋田 |
2 | 山城 |
3 | 後藤 |
OrderID | OrderItem | OrderUserID |
---|---|---|
1 | Pコート | 3 |
2 | ダッフルコート | 3 |
3 | ダウンジャケット | 1 |
4 | モッズコート | 1 |
5 | N-2Bブルゾン | 2 |
この場合、例えば「嶋田」さんが注文した商品をリストアップしたい、というときには、
・まず、テーブル「User」を検索して「嶋田」という名前のユーザーのIDを取得
・取得したユーザーのIDを元に「Order」を検索して、注文した商品リストを取得
という手順になるわけですが、この処理をサブクエリを使うことによって、以下のようにできます。
SQL
1 2 3 4 5 6 | select Order.OrderID,Order.OrderItem from Order where Order.OrderUserID = ( select User.UserID from User where User.Name= '嶋田'); |
結果
OrderID | OrderItem |
---|---|
3 | ダウンジャケット |
4 | モッズコート |
Author Profile
スターフィールド編集部
SHARE