必威体育Betway必威体育官网
当前位置:首页 > IT技术

sql之left join、right join、inner join的区别以及适用场景

时间:2019-06-10 06:43:09来源:IT技术作者:seo实验室小编阅读:80次「手机版」
 

left join

left join(左连接) 返回包括左表中的所有记录和右表中连接字段相等的记录 

Table A

id name

01 abc

02 ab

Table B

id   cnt

01   3

03   4

Select A.id,A.name,B.cnt A leftjoin B on A.id=B.id

结果

id name cnt

01 abc   3

02 ab    null

特别地,也有记录条数大于左边表的时候,例如:

Table A

id name

01 abc

02 ab

Table B

id   cnt

01   3

01   5

03   4

Select A.id,A.name,B.cnt A left join B on A.id=B.id

结果

id name cnt

01 abc   3

01 abc   5

02 ab    null

结果是3条记录,比左连接左边的表table A的记录条数2还要多。

连接字段即两表的id字段

right join(右连接) 返回包括右表中的所有记录和左表中连接字段相等的记录

Table B

id   cnt

01   3

03   4

Table A

id name

01 abc

02 ab

Select A.id,A.name,B.cnt B right join A on A.id=B.id

结果

id name cnt

01 abc   3

02 ab    null

左连接和右连接很相似,只是左右表位置的不同罢了。适用场景,如:员工表中有个字段是详细地址信息表的主键id,这两个表相关联时,就可以用左连接或右连接,因为在详细地址信息表中找不到某员工的地址信息也要将员工这条记录显示出来,相应的详细地址信息字段为空即可,而不能因为地址没有存在数据库里,这个员工就没了(简单理解成不重要的信息不影响整条记录的显示)

inner join(等值连接、内连接) 只返回两个表中连接字段相等的行

Table A

id name

01 abc

02 ab

Table B

id   cnt

01   3

03   4

Select A.id,A.name,B.cnt A inner join B on A.id=B.id

结果

id name cnt

01 abc   3

内连接的适用场景:相连接的两个表中必须在某个字段上有相等的值才可以将整条记录显示出来,如一条服务单记录在了两个表中,A表中记录了该服务单的服务时间、坐席名称和录音地址等基本信息,B表中记录了该服务单的业务详情,如保险单号,车牌号,保单日期等,当显示该服务单时,要将A表与B表做内连接,因为少这两表任何一个表,该服务单都不算完整,缺失的信息会使业务上没法继续。

总结:可以将可使用左连接和右连接的两个表理解成其中一个表的信息明显比另外一个表的信息重要得多;使用内连接的两个表理解成重要程度区别不太大的两个表。

注意:看“重要”与否的标准要对于查询结果的显示而言。

相关阅读

TrimLeft()和TrimRight()

strming.TrimLeft();  //将字符串最前面的空格修整掉。当在没有参数的情况下调用时,TrimLeft删除换行符,空格和tab字符。 strming.

常见多线程面试题之Thread的join()方法

join简介 join()方法是Thread类中的一个方法,该方法的定义是等待该线程终止。其实就是join()方法将挂起调用线程的执行,直到被调用

Excel中Left函数是什么有什么用

excel中最强大同时又比较复杂的功能就是excel函数了,学会Excel函数的运用,将会提高我们表格制作的效率。大家应该还不知道Left函数

分享到:

栏目导航

推荐阅读

热门阅读