子查询
- 子查询(Subquery),就是把一条
SELECT查询语句,写在另一条 SQL 语句内部。 - 可以理解为:先执行里面的小查询,再把结果交给外面的查询继续处理
- 子查询优先高,需要先执行子查询的结果,拿到子查询结果,再给外面查询
- IN关键字,常用于子查询,表示判断某个值,是否存在一组值中
配合IN关键字
# 查询用户 ID 存在于订单表中的用户
SELECT *
FROM users
WHERE id IN (
SELECT user_id
FROM orders
);
FROM 子查询别名
SELECT *
FROM (
SELECT user_id, SUM(amount) AS total_amount
FROM orders
GROUP BY user_id
) AS order_summary;
子查询常见问题
- where子查询中,使用了=
- 由于子查询会返回多行,使用=匹配会报错,使用IN关键字替代
- FROM 子查询没有别名
- FROM使用子查询需要设置别名