关于SQL数据库中cross join 和inner join用法上的区别?

关于SQL数据库中cross join 和inner join用法上的区别?,第1张

SQL数据库中cross join 和inner join区别为:连接不同、条件筛选不同、语法不同。

一、连接不同

1、cross join :cross join将A表的所有行分别与B表的所有行进行连接,返回的记录数为两个表的记录数乘积。

2、inner join:inner join组合两个表中的记录,只有公共字段之中有相符的值才进行连接。

二、条件筛选不同

1、cross join :cross join不能在连接时进行条件筛选。

2、inner join:inner join可以通过on关键字,在连接时进行条件筛选。

三、语法不同

1、cross join :cross join 的语法不加on关键字,为SELECT * FROM table1 CROSS JOIN table2。

2、inner join:inner join的语法可以加on关键字,为SELECT * FROM table1 INNER JOIN table2 ON table1.field1  = table2.field2。

举个简单的例子吧,从结果来理解比较具体些。

a表

name sex

张三 男

李四

b表

name age

李四 30

王五 23

1\全外连接

select a.name,a.sex,b.name,b.age

from a full outer join b on a.name=b.name

结果如下,

name sex name age

张三 男 NULL NULL

李四 女 李四 30

NULL NULL 王五 23

关联字段name,左表有而右表没有的,如张三,b.name,b.age都为NULL,加上左右两边都有的就是左连接的结果而右表有而左表表没有的,如王五,a.name,a.sex都为NULL,加上左右两边都有的就是右连接的结果左右两边都有的如,李四,这就是内连接。相见如下

2\左

select a.name,a.sex,b.name,b.age

from a left outer join b on a.name=b.name

结果如下

name sex name age

张三 男 NULL NULL

李四 女 李四 30

2\右

select a.name,a.sex,b.name,b.age

from a right outer join b on a.name=b.name

结果如下

name sex name age

李四 女 李四 30

NULL NULL 王五 23

3\内联

select a.name,a.sex,b.name,b.age

from a inner join b on a.name=b.name

结果如下

name sex name age

李四 女 李四 30

4\交叉

select a.name,a.sex,b.name,b.age

from a cross join b on a.name=b.name

结果如下

name sex name age

张三 男 李四 30

李四 女 王五 23

张三 男 王五 23

李四 女 李四 30


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6681718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存