温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

新手怎么学数据库自连接

发布时间:2026-09-25 11:35:19 来源:亿速云 阅读:101 作者:小樊 栏目:数据库

“自连接(Self Join)”是数据库里一个很容易让新手发懵的概念,但其实核心思想很简单:把同一张表当成两张表来用。

下面我用“零基础也能懂”的方式,带你一步步学。


一、什么是自连接?

自连接:同一张表自己和自己连接(JOIN)

普通连接是:

表A JOIN 表B

自连接是:

表A AS a JOIN 表A AS b

(给同一张表起两个“别名”)


二、为什么要用自连接?

当数据之间存在层级或关联关系,且都在同一张表里时,就需要自连接。

常见例子:

  • 员工表里有“上级ID”
  • 分类表里有“父分类ID”
  • 论坛里有“回复哪条评论”

三、最经典的例子:员工表

假设有一张员工表 employee:

id name manager_id
1 张三 NULL
2 李四 1
3 王五 1
4 赵六 2
  • manager_id 表示“谁是他的上级”

四、自连接怎么写?

目标:

查出 员工名 + 他的上级名

SQL 写法:

SELECT
    e.name AS 员工,
    m.name AS 上级
FROM employee e
JOIN employee m
ON e.manager_id = m.id;

关键点解释:

  • e:员工视角
  • m:上级视角
  • 连接条件:员工的上级ID = 上级的员工ID

查询结果:

员工 上级
李四 张三
王五 张三
赵六 李四

五、新手常犯的错误

❌ 错误 1:忘了起别名

SELECT *
FROM employee
JOIN employee;  -- 会报错

✅ 一定要:

FROM employee a
JOIN employee b

❌ 错误 2:分不清“谁连谁”

记住一句口诀:

“从表连主表”

比如:

  • 员工连上级
  • 子分类连父分类

六、LEFT JOIN 的自连接(很重要)

如果有人没有上级(比如老板),用 JOIN 会漏掉。

✅ 改成:

SELECT
    e.name AS 员工,
    m.name AS 上级
FROM employee e
LEFT JOIN employee m
ON e.manager_id = m.id;

这样张三也会显示(上级为 NULL)。


七、怎么练习自连接?

推荐练习表

  1. 员工表(上级ID)
  2. 分类表(父ID)
  3. 城市表(所属省份ID)

练习题目

  • 查每个分类的父分类名
  • 查每个员工的间接上级(上级的上级)
  • 查“自己回复自己”的评论

八、一句话总结

自连接 = 同一张表起两个别名 + 用字段表示层级关系

如果你愿意,我可以:

  • 用 MySQL / Oracle / SQL Server 分别写示例
  • 给你 练习题 + 答案
  • 用 图帮你画关系

你现在是刚学 SQL,还是已经在写项目了?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手