温馨提示×

温馨提示×

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

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

数据库自连接怎么写SQL

发布时间:2026-09-25 10:39:15 来源:亿速云 阅读:121 作者:小樊 栏目:数据库

数据库自连接(Self Join) 是指一张表自己和自己进行连接,常用于处理层级结构、上下级关系、同一表中不同记录之间的比较等场景。


一、基本写法

自连接本质上就是把同一张表当成两张表来用,必须通过 表别名 来区分。

语法模板

SELECT a.列, b.列
FROM 表名 a
JOIN 表名 b
  ON a.某字段 = b.某字段;

二、常见示例

示例 1:员工表(员工与上级)

CREATE TABLE employee (
    id INT,
    name VARCHAR(50),
    manager_id INT
);

需求:查询员工及其上级姓名

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

✅ 使用 LEFT JOIN 是为了保留没有上级的员工(如 CEO)


示例 2:比较同一张表中的记录

CREATE TABLE scores (
    student_id INT,
    subject VARCHAR(20),
    score INT
);

需求:找出数学比语文分数高的学生

SELECT 
    a.student_id
FROM scores a
JOIN scores b
  ON a.student_id = b.student_id
WHERE a.subject = '数学'
  AND b.subject = '语文'
  AND a.score > b.score;

示例 3:查找重复数据

SELECT 
    a.id, a.email
FROM users a
JOIN users b
  ON a.email = b.email
 AND a.id > b.id;

三、注意事项

  1. 必须起别名(否则 SQL 无法区分两张“表”)
  2. 自连接本质是 内连接 / 左连接 / 右连接
  3. 数据量大时注意索引(通常连接字段要建索引)

如果你有具体的表结构或业务场景,我可以直接帮你写对应的自连接 SQL。

向AI问一下细节

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

AI
助
手