SQL子查询详解
学习如何使用子查询在SELECT、FROM和WHERE子句中嵌套查询,实现更灵活的数据检索。 · 难度:入门 · +15XP
什么是子查询?
子查询(Subquery)是嵌套在另一个SQL查询内部的查询。它通常用括号括起来,可以出现在SELECT、FROM、WHERE、HAVING等子句中。子查询先于主查询执行,并将结果传递给主查询使用。
基本语法
SELECT column1, column2
FROM table1
WHERE column1 = (SELECT column1 FROM table2 WHERE condition);示例场景
假设我们有两张表:employees(员工表)和departments(部门表)。
| employees | departments |
|---|---|
| id, name, salary, dept_id | id, dept_name |
查询工资高于平均工资的员工:
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);子查询类型
- 标量子查询:返回单个值,常用于WHERE比较。
- 行子查询:返回单行多列。
- 表子查询:返回多行多列,常用于FROM子句中作为临时表。
练习提示
尝试编写一个子查询,找出在销售部门工作的所有员工姓名。提示:先查询销售部门的ID,再查询员工表。