“自连接(Self Join)”本质上就是同一张表当成两张表来连接,理解的关键是把一张表在逻辑上拆成两个“角色”。下面我用通俗方式帮你建立看懂自连接结果的思路。
自连接 = 把同一张表起两个别名,当两张表用
例如:
SELECT a.id, b.id
FROM emp a
JOIN emp b ON a.manager_id = b.id;
这里:
a:员工视角b:上级视角看自连接结果时,不要想“这是一张表”,而要问自己:
示例语义:
a:下属b:经理那么结果的一行就是:
“某个下属 + 他的经理”
SELECT
a.name AS 员工,
b.name AS 经理
FROM emp a
LEFT JOIN emp b
ON a.manager_id = b.id;
结果怎么读?
| 员工 | 经理 |
|---|---|
| 张三 | 李四 |
| 王五 | 李四 |
| 李四 | NULL |
✅ 每一行 = 一个员工 + 他的上级
✅ NULL 表示没有上级(老板)
SELECT
a.name,
b.name AS 工资更高的人
FROM emp a
JOIN emp b
ON a.salary < b.salary;
结果怎么读?
SELECT
a.id,
b.id AS 上一条
FROM t a
LEFT JOIN t b
ON a.id = b.id + 1;
读法是:
a:当前记录b:前一条记录自连接结果容易让人懵,通常是因为:
✅ 解决方式:
员工 / 经理 / 上级 / 下一条)FROM 表 A
JOIN 表 A B
ON A.x = B.y
问自己:
如果你愿意,可以把你正在看的那条自连接 SQL发给我,我可以直接帮你“逐行翻译结果”。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。