この記事では、複数のサブクエリを組み合わせたSQLクエリの書き方について詳しく解説します。サブクエリの基本から応用までをカバーし、具体的な例を通して理解を深めていきましょう。
目次
サブクエリの基本
SQLのクエリの中でさらにクエリを使うことを「サブクエリ」といいます。この技術はデータ解析や情報の抽出に非常に役立ちます。
サブクエリの種類
サブクエリには大きく分けて以下の3つの種類があります。
- スカラーサブクエリ
- 行サブクエリ
- テーブルサブクエリ
複数のサブクエリの組み合わせ
1つのクエリ文内で複数のサブクエリを組み合わせることも可能です。このようなクエリは複雑なデータ解析や抽出に用いられます。
基本的な組み合わせ方
SELECT main.column1, main.column2
FROM main_table AS main
WHERE main.column1 IN (
SELECT sub1.column1 FROM sub_table1 AS sub1
) AND main.column2 IN (
SELECT sub2.column2 FROM sub_table2 AS sub2
);
条件に応じた組み合わせ方
組み合わせるサブクエリに条件を加えることで、さらに高度なデータ抽出が可能です。
SELECT main.column1, main.column2
FROM main_table AS main
WHERE main.column1 IN (
SELECT sub1.column1 FROM sub_table1 AS sub1 WHERE sub1.condition = 'A'
) OR main.column2 IN (
SELECT sub2.column2 FROM sub_table2 AS sub2 WHERE sub2.condition = 'B'
);
具体的な例とその解説
従業員テーブルと部署テーブル
従業員ID | 名前 | 部署ID |
---|---|---|
1 | 山田 | 100 |
2 | 田中 | 200 |
3 | 佐藤 | 100 |
4 | 鈴木 | 300 |
部署ID | 部署名 |
---|---|
100 | 営業 |
200 | 人事 |
300 | 技術 |
営業部署の従業員を抽出するクエリ
SELECT emp.名前
FROM 従業員テーブル AS emp
WHERE emp.部署ID IN (
SELECT dept.部署ID FROM 部署テーブル AS dept WHERE dept.部署名 = '営業'
);
まとめ
複数のサブクエリを組み合わせたSQLクエリは、複雑なデータ解析や情報抽出に大変有用です。本記事で解説した内容を理解し、効率的なデータ操作を目指しましょう。
コメント