在数据库中,自连接(Self Join) 是指一张表自己和自己进行连接查询。因为参与连接的“两张表”其实是同一张表,所以必须给表起别名(Alias),否则数据库无法区分字段来自哪一侧。
SELECT a.列1, b.列2
FROM 表名 a
JOIN 表名 b
ON a.某字段 = b.某字段;
a 和 b 就是表的别名a.id、b.parent_id假设有表 employee:
| id | name | manager_id |
|---|---|---|
| 1 | 张三 | NULL |
| 2 | 李四 | 1 |
SELECT
e.name AS 员工,
m.name AS 上级
FROM employee e
LEFT JOIN employee m
ON e.manager_id = m.id;
结果:
| 员工 | 上级 |
|---|---|
| 张三 | NULL |
| 李四 | 张三 |
SELECT
c1.category_name AS 子分类,
c2.category_name AS 父分类
FROM category c1
JOIN category c2
ON c1.parent_id = c2.id;
以下写法都合法:
FROM employee AS e
FROM employee e -- AS 可省略
✅ 自连接必须使用别名
✅ 连接条件通常是“同一张表的不同字段”
✅ 常配合 LEFT JOIN 处理“顶层节点为空”的情况
如果你用的是 MySQL / Oracle / SQL Server / PostgreSQL,或者想看某个具体业务场景(如树形结构、评论回复),可以告诉我,我给你写对应示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。