温馨提示×

温馨提示×

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

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

如何用自连接查询数据

发布时间:2026-10-16 00:17:18 来源:亿速云 阅读:91 作者:小樊 栏目:数据库

自连接(Self Join)是指一张表自己和自己进行连接查询,常用于处理层级关系或同一表中相互关联的数据(如员工与上级、分类与父分类、好友关系等)。


一、基本语法

SELECT
    a.列1, b.列2
FROM
    表名 a
JOIN
    表名 b
ON
    a.关联字段 = b.被关联字段;

关键点:

  • 同一张表要起 两个不同的别名(a、b)
  • 通过 ON 指定“自己和自己怎么关联”

二、经典示例 1:员工与上级(最常见)

表结构

employees
| id | name | manager_id |

查询:每个员工及其上级姓名

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

✅ 用 LEFT JOIN 可保留没有上级的员工(如 CEO)


三、经典示例 2:商品分类层级

表结构

categories
| id | name | parent_id |

查询:子分类及其父分类

SELECT
    c.name AS 子分类,
    p.name AS 父分类
FROM
    categories c
LEFT JOIN
    categories p
ON
    c.parent_id = p.id;

四、经典示例 3:查找“同一城市的人”

SELECT
    a.name,
    b.name,
    a.city
FROM
    users a
JOIN
    users b
ON
    a.city = b.city
WHERE
    a.id < b.id;  -- 避免重复配对

五、自连接 vs 子查询

场景 推荐方式
需要同时展示“双方信息” 自连接
只判断是否存在 子查询 / EXISTS

六、注意事项

  1. 必须起别名,否则 SQL 不知道用哪一份表
  2. 注意是否用 LEFT JOIN(防止数据丢失)
  3. 可多层自连接(如三级分类)

如果你有具体表结构或业务场景(比如组织架构、评论回复、订单关联),我可以直接帮你写自连接 SQL。

向AI问一下细节

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

AI
助
手