跳到主要内容

子查询

  • 子查询(Subquery),就是把一条 SELECT 查询语句,写在另一条 SQL 语句内部。
  • 可以理解为:先执行里面的小查询,再把结果交给外面的查询继续处理
    • 子查询优先高,需要先执行子查询的结果,拿到子查询结果,再给外面查询
  • IN关键字,常用于子查询,表示判断某个值,是否存在一组值中

配合IN关键字​

sql
# 查询用户 ID 存在于订单表中的用户
SELECT *
FROM users
WHERE id IN (
SELECT user_id
FROM orders
);

FROM 子查询别名​

sql
SELECT *
FROM (
SELECT user_id, SUM(amount) AS total_amount
FROM orders
GROUP BY user_id
) AS order_summary;

子查询常见问题​

  • where子查询中,使用了=
    • 由于子查询会返回多行,使用=匹配会报错,使用IN关键字替代
  • FROM 子查询没有别名
    • FROM使用子查询需要设置别名