数据库自连接(Self Join) 是指一张表自己和自己进行连接,常用于处理层级结构、上下级关系、同一表中不同记录之间的比较等场景。
自连接本质上就是把同一张表当成两张表来用,必须通过 表别名 来区分。
SELECT a.列, b.列
FROM 表名 a
JOIN 表名 b
ON a.某字段 = b.某字段;
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)
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;
SELECT
a.id, a.email
FROM users a
JOIN users b
ON a.email = b.email
AND a.id > b.id;
如果你有具体的表结构或业务场景,我可以直接帮你写对应的自连接 SQL。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。