可以的,自连接(Self Join)完全可以嵌套使用。
自连接是指一张表和自己进行连接,在 SQL 中通过给表取不同的别名来实现,例如:
SELECT a.id, b.id
FROM employee a
JOIN employee b ON a.manager_id = b.id;
✅ 可以。常见形式有两类:
比如:员工 → 经理 → 总监
SELECT e.name AS emp,
m.name AS manager,
d.name AS director
FROM employee e
JOIN employee m ON e.manager_id = m.id
JOIN employee d ON m.manager_id = d.id;
这里对 employee 表做了两次自连接,本质是嵌套式的关联。
例如先自连接得到中间结果,再外层使用:
SELECT *
FROM (
SELECT a.id, b.name AS leader
FROM employee a
JOIN employee b ON a.manager_id = b.id
) t
WHERE t.leader = 'Tom';
子查询里是自连接,外层再查询,这也是一种嵌套。
在支持递归的数据库中(如 PostgreSQL、SQL Server),可用 递归 CTE + 自连接 实现层级嵌套:
WITH RECURSIVE cte AS (
SELECT id, manager_id, 1 AS level
FROM employee
WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.manager_id, c.level + 1
FROM employee e
JOIN cte c ON e.manager_id = c.id
)
SELECT * FROM cte;
如果你有具体业务场景(比如组织架构、评论回复、分类树),我可以帮你写对应的嵌套自连接 SQL。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。