sqlserver 的交叉连接和内部连接有啥区别吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 的交叉连接和内部连接有啥区别吗?相关的知识,希望对你有一定的参考价值。

假设有两张表,A表和B表,A表有m条记录,x个属性;B表有n条记录,y个属性
交叉连接(cross join):A表和B表交叉连接就是,A表中的每条记录都和B表的的记录进行连接。A表和B表交叉最后会得到一个表会有m×n条记录,属性会有x+y个。而且这种连接比较消耗资源。
内部连接: 它是交叉连接的一个变形,内部连接一般都会有一个连接条件,只有满足条件的连接才会被选中。如果内部连接没有设置合理的条件,那它和交叉连接是等价的。一般得到的表会是<=m×n条记录,<=x+y个属性。
参考技术A 交叉连接其实是实现笛卡尔积,例如表a有m条记录,表b有n条记录,则经过笛卡尔后,可返回m*n条记录。在游戏的发奖操作中,笛卡尔积用的比较多

内部连接通常都是指嵌套循环连接

多表连接查询中,“on”和“where”有啥区别吗?

参考技术A 区别还是有的:(如下)\\x0d\\x0a1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。\\x0d\\x0a\\x0d\\x0a2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

以上是关于sqlserver 的交叉连接和内部连接有啥区别吗?的主要内容,如果未能解决你的问题,请参考以下文章

用Java连接sqlserver数据库时候几个jar包有啥区别?

SQL中有几种连接?有啥区别?(左连右连内连和外连?)

多表连接查询中,“on”和“where”有啥区别吗?

MSSQL 的复合索引和包含索引有啥区别?

在 SQLite 中关闭游标或连接有啥区别吗?

交叉验证和网格搜索有啥区别?