サブクエリとは
サブクエリは、他のSQLクエリ内で使用されるクエリです。メインのクエリで使用するためにデータベースからデータを取得するために使用されます。サブクエリを使用することで、1つのステージの結果を次のステージの入力として使用して、複数の段階で操作を実行することができます。
サブクエリは、SELECT
、FROM
、WHERE
、HAVING
句など、SQL文のさまざまな部分で使用することができます。サブクエリによって返されたデータは、外部クエリによってさらなる操作に使用されます。サブクエリは、使用方法に応じて、単一の値(スカラー)、単一の行、複数の行、またはテーブルを返すことができます。
サブクエリの構文と使用方法
SQLにおけるサブクエリの構文とさまざまな使用方法について説明します。次の2つのテーブル、「Employees(従業員)」と「Departments(部門)」を含むシンプルなデータベースを使用します。テーブルの定義は次のとおりです。
Employees:
EmployeeID | FirstName | LastName | DepartmentID | Salary |
---|---|---|---|---|
1 | John | Doe | 1 | 50000 |
2 | Jane | Smith | 2 | 60000 |
3 | Mary | Johnson | 1 | 70000 |
4 | James | Brown | 3 | 80000 |
Departments:
DepartmentID | DepartmentName |
---|---|
1 | HR |
2 | Finance |
3 | IT |
サブクエリの基本的な構文
サブクエリは括弧内に記述され、メインのSQLクエリのさまざまな部分に配置することができます。以下は、WHERE
句におけるサブクエリの基本的な構文です。
sql
SELECT column_name(s)
FROM table_name
WHERE column_name operator (SELECT column_name FROM table_name WHERE condition);
例えば、平均給与を超える全ての従業員を見つける場合、次のようになります。
sql
SELECT FirstName, LastName, Salary
FROM Employees
WHERE Salary > (SELECT AVG(Salary) FROM Employees);
このクエリの結果は次のとおりです。
FirstName | LastName | Salary |
---|---|---|
Mary | Johnson | 70000 |
James | Brown | 80000 |
インラインビュー
インラインビューは、FROM
句内のサブクエリです。複雑なクエリを簡略化するために使用できます。以下は例です。
sql
SELECT e.FirstName, e.LastName, e.Salary
FROM (SELECT * FROM Employees WHERE Salary > 60000) as e;
このクエリの結果は次のとおりです。
FirstName | LastName | Salary |
---|---|---|
Mary | Johnson | 70000 |
James | Brown | 80000 |
AlloyDB
Amazon Cognito
Amazon EC2
Amazon ECS
Amazon QuickSight
Amazon RDS
Amazon Redshift
Amazon S3
API
Autonomous Vehicle
AWS
AWS API Gateway
AWS Chalice
AWS Control Tower
AWS IAM
AWS Lambda
AWS VPC
BERT
BigQuery
Causal Inference
ChatGPT
Chrome Extension
CircleCI
Classification
Cloud Functions
Cloud IAM
Cloud Run
Cloud Storage
Clustering
CSS
Data Engineering
Data Modeling
Database
dbt
Decision Tree
Deep Learning
Descriptive Statistics
Differential Equation
Dimensionality Reduction
Discrete Choice Model
Docker
Economics
FastAPI
Firebase
GIS
git
GitHub
GitHub Actions
Google
Google Cloud
Google Search Console
Hugging Face
Hypothesis Testing
Inferential Statistics
Interval Estimation
JavaScript
Jinja
Kedro
Kubernetes
LightGBM
Linux
LLM
Mac
Machine Learning
Macroeconomics
Marketing
Mathematical Model
Meltano
MLflow
MLOps
MySQL
NextJS
NLP
Nodejs
NoSQL
ONNX
OpenAI
Optimization Problem
Optuna
Pandas
Pinecone
PostGIS
PostgreSQL
Probability Distribution
Product
Project
Psychology
Python
PyTorch
QGIS
R
ReactJS
Regression
Rideshare
SEO
Singer
sklearn
Slack
Snowflake
Software Development
SQL
Statistical Model
Statistics
Streamlit
Tabular
Tailwind CSS
TensorFlow
Terraform
Transportation
TypeScript
Urban Planning
Vector Database
Vertex AI
VSCode
XGBoost