Self Join(自连接)是一种在SQL查询中,将一个表与自身进行连接的技巧。这种技术通常用于解决以下几种使用场景:
假设有一个员工表 employees,结构如下:
| employee_id | name | manager_id |
|---|---|---|
| 1 | Alice | NULL |
| 2 | Bob | 1 |
| 3 | Charlie | 1 |
| 4 | David | 2 |
-- 查询每个员工的直接上级
SELECT e.name AS employee, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.employee_id;
-- 查询每个员工的直接下属
SELECT m.name AS manager, e.name AS employee
FROM employees m
LEFT JOIN employees e ON m.employee_id = e.manager_id;
WITH RECURSIVE Subordinates AS (
SELECT employee_id, name
FROM employees
WHERE manager_id = (SELECT employee_id FROM employees WHERE name = 'Alice')
UNION ALL
SELECT e.employee_id, e.name
FROM employees e
INNER JOIN Subordinates s ON s.employee_id = e.manager_id
)
SELECT * FROM Subordinates;
总之,Self Join是一种强大的工具,但在使用时需要根据具体需求和数据结构来选择合适的策略。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。