嵌套查询是SQL中的一种查询方式,它允许在一个查询语句中嵌入另一个查询语句。嵌套查询通常用于在一个查询中引用另一个查询的结果,例如,从一个表中筛选出满足另一个查询条件的记录。
```sql
SELECT 列名1, 列名2, ...
FROM 表名1
WHERE 列名 IN (
SELECT 列名
FROM 表名2
WHERE 条件表达式
)
这里,`SELECT` 语句中的 `WHERE` 子句引用了另一个 `SELECT` 语句的结果,这个内部查询被称为子查询。子查询可以嵌套多层,每层子查询都可以有自己的 `WHERE` 子句或其他逻辑运算符。
举个例子,假设我们有两个表:`employees` 和 `departments`,我们想找出每个部门的最高工资员工的名字和工资。我们可以使用嵌套查询来实现这个目标:
```sql
SELECT e.name, e.salary
FROM employees e
WHERE e.salary = (
SELECT MAX(e2.salary)
FROM employees e2
WHERE e2.dept_id = e.dept_id
)
在这个例子中,外层查询从 `employees` 表中选择员工的名字和工资,内层查询找出每个部门的最高工资,然后外层查询再从 `employees` 表中选择出这些最高工资的员工。
需要注意的是,子查询中不能使用 `ORDER BY` 子句,因为 `ORDER BY` 用于对查询结果进行排序,而嵌套查询的结果集在传递给外部查询之前并没有被排序。
希望这能帮助你理解SQL嵌套查询的写法