优秀的编程知识分享平台

网站首页 > 技术文章 正文

彻底搞懂where,inner join,left join,right join,full join的区别

nanyue 2025-02-03 14:24:54 技术文章 8 ℃

表Persons:



表Orders:


1.用where 语句将两张表进行关联查询

SELECT * FROM dbo.Persons a,dbo.Orders b WHERE a.Id=b.Pid



where子句中连接两张表,在数据库语言中,被称为隐性连接,结果和INNER JOIN一样。

Note:where 连接叫隐性连接,而用join的连接,叫显性连接,sqlserver后期版本基本都采用显性连接。


2.inner join (内连接),两张表中都有数据才会匹配

SELECT * FROM dbo.Persons a INNER JOIN dbo.Orders b ON a.Id=b.Pid


3.left join(左连接),理解为“有左显示”,比如on a.field=b.field,则显示a表中存在的全部数据及a,b中都有的数据,A表中有,B表中没有的数据以NULL显示:

SELECT * FROM dbo.Persons a LEFT JOIN dbo.Orders b ON a.Id=b.Pid


4.right join(右连接) ,理解为“有右显示”,比如on a.field=b.field,则显示B表中存在的全部数据及a,b中都有的数据,B表中有、A表中没有的数据以NULL显示:

SELECT * FROM dbo.Persons a RIGHT JOIN dbo.Orders b ON a.Id=b.Pid


5.full join:全连接,两张表中所有数据都显示:

SELECT * FROM dbo.Persons a FULL JOIN dbo.Orders b ON a.Id=b.Pid


Tags:

最近发表
标签列表