可以的,SQL 中的子查询(Subquery)是可以嵌套的,也就是“子查询里再写子查询”。
嵌套子查询指的是:一个子查询的结果,作为另一个子查询的输入或条件,可以多层嵌套。
SELECT *
FROM employees
WHERE department_id = (
SELECT department_id
FROM departments
WHERE location_id = (
SELECT location_id
FROM locations
WHERE city = 'Beijing'
)
);
上面例子中:
city = 'Beijing' 的 location_idlocation_id 找 department_iddepartment_id 查员工SELECT *
FROM t1
WHERE col1 = (SELECT col2 FROM t2 WHERE col3 = (SELECT col4 FROM t3));
SELECT
id,
(SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;
SELECT *
FROM (
SELECT *
FROM (
SELECT * FROM sales
) t1
) t2;
JOINWITH(CTE,公共表表达式)WITH loc AS (
SELECT location_id FROM locations WHERE city = 'Beijing'
),
dept AS (
SELECT department_id FROM departments WHERE location_id IN (SELECT location_id FROM loc)
)
SELECT * FROM employees WHERE department_id IN (SELECT department_id FROM dept);
✅ 子查询可以嵌套
⚠ 但不建议嵌套太深
✅ 复杂逻辑优先考虑 JOIN 或 CTE
如果你有具体 SQL 场景,我可以帮你改写或优化。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。