Nested Query(嵌套查询 / 子查询) 指的是在一个 SQL 查询里再写另一个查询,通常把内层查询的结果作为外层查询的条件或数据来源。
下面用常见数据库(MySQL / PostgreSQL / SQL Server 通用)来说明。
SELECT 列
FROM 表
WHERE 列 运算符 (子查询);
子查询通常用 () 包起来。
例子:查询工资高于平均工资的员工
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
例子:把子查询结果当临时表用
SELECT dept, avg_salary
FROM (
SELECT dept, AVG(salary) AS avg_salary
FROM employees
GROUP BY dept
) AS t
WHERE avg_salary > 5000;
⚠️ 在 FROM 中的子查询,必须起别名(如
AS t)
例子:查询在销售部工作的员工
SELECT name
FROM employees
WHERE dept_id IN (
SELECT id
FROM departments
WHERE dept_name = 'Sales'
);
例子:只查“有订单的客户”
SELECT name
FROM customers c
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.customer_id = c.id
);
子查询依赖外层查询:
SELECT e.name, e.salary
FROM employees e
WHERE e.salary > (
SELECT AVG(salary)
FROM employees
WHERE dept_id = e.dept_id
);
意思是:比自己部门平均工资高的人
✅ 子查询可返回:
=, >, <)IN, ANY, ALL)❌ 避免:
如果你有具体数据库(MySQL / Oracle / SQL Server)或具体业务场景,我可以给你更贴切的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。