についても---
サブクエリ(副問い合わせ)とは?
- サブクエリとは、「クエリ(問い合わせ)」の中に、さらに別のクエリを含める書き方のこと。
- 主にSELECT文内やWHERE句、FROM句などで使われる。
- サブクエリの結果がメインのクエリの条件やデータとして利用される。
サブクエリの主な使い方
-
WHERE句での利用
- 例:特定の条件に合致するデータのみを抽出する際に使う
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE total > 10000); -
FROM句での利用(インラインビュー)
- サブクエリの結果を一時的なテーブルのように利用
SELECT name, total FROM (SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id) AS t; -
SELECT句での利用
- 各行に対してサブクエリを評価し、列として値を返す
SELECT name, (SELECT COUNT(*) FROM orders WHERE user_id = users.id) as order_count FROM users;
サブクエリの種類
-
スカラーサブクエリ
1件だけ値を返すサブクエリ -
行サブクエリ
1件のレコード(複数列)を返すサブクエリ -
テーブルサブクエリ
複数行・複数列の結果を返すサブクエリ
サブクエリ利用時の注意点
- サブクエリはネストが深い場合、パフォーマンスが低下しやすい
- 場合によってはJOINやWITH句(共通テーブル式)の方が最適なケースもある
- インデックスの効き方に影響が出る場合がある
まとめ
- サブクエリは複雑なデータ抽出や集計に便利
- 使いすぎによるパフォーマンス低下に注意
- 時と場合によって使い分けが必要