温馨提示×

温馨提示×

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

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

sql连接查询有哪几种

发布时间:2026-10-27 21:17:11 来源:亿速云 阅读:83 作者:小樊 栏目:数据库

在 SQL 中,**连接查询(JOIN)**主要用于根据两个或多个表之间的关联条件查询数据。常见的连接类型如下:


一、内连接(INNER JOIN)

只返回两表中满足连接条件的记录。

SELECT *
FROM A
INNER JOIN B
ON A.id = B.a_id;

✅ 结果:A 和 B 中都存在的匹配数据


二、左连接(LEFT JOIN / LEFT OUTER JOIN)

返回左表所有记录,右表无匹配时补 NULL。

SELECT *
FROM A
LEFT JOIN B
ON A.id = B.a_id;

✅ 结果:A 全有,B 匹配不到则为 NULL


三、右连接(RIGHT JOIN / RIGHT OUTER JOIN)

返回右表所有记录,左表无匹配时补 NULL。

SELECT *
FROM A
RIGHT JOIN B
ON A.id = B.a_id;

✅ 结果:B 全有,A 匹配不到则为 NULL


四、全外连接(FULL JOIN / FULL OUTER JOIN)

返回左右两表所有记录,无匹配处补 NULL。

SELECT *
FROM A
FULL JOIN B
ON A.id = B.a_id;

⚠️ 注意:MySQL 不支持 FULL JOIN(可用 UNION 模拟)


五、交叉连接(CROSS JOIN)

返回两表的笛卡尔积(无连接条件)。

SELECT *
FROM A
CROSS JOIN B;

✅ 结果:A 行数 × B 行数


六、自连接(SELF JOIN)

同一张表自己连接自己(通常用别名)。

SELECT e1.name, e2.name
FROM employee e1
JOIN employee e2
ON e1.manager_id = e2.id;

七、自然连接(NATURAL JOIN)(少用)

自动按同名字段连接。

SELECT *
FROM A
NATURAL JOIN B;

⚠️ 容易因字段名变化产生意外结果


总结对照表

类型 是否返回未匹配 说明
INNER JOIN ❌ 只返回匹配
LEFT JOIN ✅(右表 NULL) 左表全
RIGHT JOIN ✅(左表 NULL) 右表全
FULL JOIN ✅ 两边全
CROSS JOIN — 笛卡尔积
SELF JOIN 看类型 自己连自己

如果你用的是 MySQL / Oracle / SQL Server,我也可以结合具体数据库再细讲。

向AI问一下细节

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

AI
助
手