自连接(Self Join)是指一张表与自身进行连接查询,通常在 SQL 中用表别名来区分“同一张表的不同角色”。
最常见场景,例如:
示例:查员工及其直接上级
SELECT e.name AS 员工, m.name AS 上级
FROM employee e
LEFT JOIN employee m
ON e.manager_id = m.id;
例如:
示例:找出工资高于自己部门平均工资的员工
SELECT a.name, a.salary
FROM employee a
JOIN employee b
ON a.dept_id = b.dept_id
WHERE a.salary > b.salary;
(更常见用子查询,但自连接也可实现)
例如:
示例:互相关注的用户
SELECT f1.user_id, f1.friend_id
FROM friendship f1
JOIN friendship f2
ON f1.user_id = f2.friend_id
AND f1.friend_id = f2.user_id;
例如:
SELECT cur.id, prev.id
FROM orders cur
JOIN orders prev
ON cur.user_id = prev.user_id
AND cur.date = prev.date + 1;
GROUP BY 更高效自连接适合:同一张表中,记录之间存在“关系”或“层级”的场景。
如果你有具体业务表结构,我可以直接帮你写自连接 SQL。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。