在 SQL 中,连接(JOIN)是一个统称,而自连接(Self Join)是连接的一种特殊用法。它们的核心区别不在于“语法机制”,而在于参与连接的对象是否相同。
连接是指:把两张或多张不同的表,按照某种条件组合在一起查询。
例如:
SELECT *
FROM 订单 o
JOIN 用户 u ON o.用户ID = u.用户ID;
这里:
自连接是指:同一张表,当成两张表来连接。
例如:员工表中,每个员工有一个“上级ID”
SELECT
e.姓名 AS 员工,
m.姓名 AS 上级
FROM 员工 e
JOIN 员工 m ON e.上级ID = m.员工ID;
这里:
员工e 和 m,把它逻辑上分成两张表| 对比点 | 普通连接 | 自连接 |
|---|---|---|
| 参与表数量 | 多张不同表 | 同一张表 |
| 是否使用别名 | 通常可选 | 必须使用别名 |
| 常见场景 | 表间关系(主外键) | 层级、前后关系 |
| 示例 | 订单 + 用户 | 员工 + 员工 |
因为有些关系只存在于同一张表内部,例如:
这些关系无法用两张物理表表达,只能用自连接。
连接是“表与表”的关系,自连接是“表与自己做关系”的连接。
如果你愿意,我也可以用图解或具体业务例子再讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。