千家信息网

SQL联合查询inner join、outer join和cross join的区别详解

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,对于开发使用到数据库的应用,免不了就要使用联合查询,SQL中常用的联合查询有inner join、outer join和cross join;这三者的区别很多人都应该不是很清楚,包括我自己,下面我们一
千家信息网最后更新 2025年11月10日SQL联合查询inner join、outer join和cross join的区别详解

对于开发使用到数据库的应用,免不了就要使用联合查询,SQL中常用的联合查询有inner join、outer join和cross join;这三者的区别很多人都应该不是很清楚,包括我自己,下面我们一起来看看,如果你使用join连表,缺陷的情况下是inner join,另外,开发中使用的left join和right join属于outer join,而outer join还包括full join.下面我通过图案让大家认识它们的区别。

现有两张表,Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的:

1.INNER JOIN 产生的结果是AB的交集

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name

2.LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。

SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name

3.RIGHT [OUTER] JOIN 产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。

SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.name = TableB.name

图示如left join类似。

4.FULL [OUTER] JOIN 产生A和B的并集。对于没有匹配的记录,则会以null做为值。

SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 

你可以通过is NULL将没有匹配的值找出来:

SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.nameWHERE TableA.id IS null OR TableB.id IS null 

5. CROSS JOIN 把表A和表B的数据进行一个N*M的组合,即笛卡尔积。如本例会产生4*4=16条记录,在开发过程中我们肯定是要过滤数据,所以这种很少用。

SELECT * FROM TableA CROSS JOIN TableB 

通过上面的比对,相信大家对inner join、outer join和cross join的区别已一目了然了。

补充

为什么最好用join?因为用","做表连接的话,A,B表直接产生笛卡尔积,然后在用where筛选结果。但是join连接,A,B表连接的时候就会根据on后面的条件筛选,然后在根据where条件筛选结果

按照sql标准CROSS JOIN是笛卡尔积。但对于mysql来说,CROSS JOIN 相当于 INNER JOIN。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

内容 数据 结果 笛卡尔 开发 查询 联合 全集 条件 学习 清楚 相同 一目了然 交集 价值 例会 可以通过 右边 图案 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 联想服务器的远程管理卡的用法 快速网络技术培训热线咨询 日常使用网络安全准则有什么 曲靖软件开发哪几家好 聚赢互联网科技有限公司 北京新数据库猿科技公司 讨论题如何建立网络安全防线 自学网络安全有什么用 亚马逊使用云服务器安全吗 数据库表示取余数的是 网络安全主要的参考规范 软件开发管理业务体系 腾达ac9博通版的服务器教程 计算式软件开发 java显示数据库信息返回值 小学生网络安全国旗下的讲话 怎样取组数据库 崇明区企业网络技术服务一体化 数据库机构转横向 网络安全法 电力 解读 软件开发odd什么意思 数据库厄尔曼答案 方舟手游谷歌号找不到服务器 dnf服务器喇叭开不出来了 孙佳鑫互联网络科技有限公司 输入网络安全性金錀是什么 渠县天气预报软件开发 实惠的erp软件开发流程 如何监控数据库线程池 游戏服务器trigger
0