- 概念上的区别:
Left Join[左联结]
返回包括左表中的所有记录和右表中联结字段相等的记录
Right Join[右联结]
返回包括右表中的所有记录和右表中联结字段相等的记录
Inner Join[等值联结]
只返回两个表中字段相等的行
二 举例说明:
表A记录如下:
AID AName
1 李明
2 王磊
3 李鹏
4 胡军
表B记录如下:
BID BName
1 明明
2 李会军
3 赵勇
8 李中山
AID AName
1 李明
2 王磊
3 李鹏
4 胡军
表B记录如下:
BID BName
1 明明
2 李会军
3 赵勇
8 李中山
执行SQL语句
演示代码
Left Join
---------------------------
select * from A Left Join B On A.AID=B.BID
结果如下:
AID AName BID BName
1 李明 1 明明
2 王磊 2 李会军
3 李鹏 3 赵勇
4 胡军 null null
所影响的行数为4行
结果分析:
Left Join 是以A表为基础的,A可以看作是左表,B可以看作是右表,Left Join是以左表为准的.
也可以简单的理解为,左表(A)的记录将会全部显示出来,而右表(B)只会显示符合搜索条件的记录;(如:A.AID=B.BID)
Right Join
---------------------------
select * from A Right Join B On A.AID=B.BID
结果如下:
AID AName BID BName
1 李明 1 明明
2 王磊 2 李会军
3 李鹏 3 赵勇
null null 8 胡军
所影响的行数为4行
结果分析:
和Left Join的结果相反,Right Join 是以右表为基础的,左表不存在的用null来填充;
Inner Join
---------------------------
select * from A Inner Join B On A.AID=B.BID
结果如下:
AID AName BID BName
1 李明 1 明明
2 王磊 2 李会军
3 李鹏 3 赵勇
所影响的行数为3行
结果分析:
怎么,少了一条记录,对了,Inner Join 只是显示出了A表中和B表中符合条件的记录,而不以任何一张表为基准.
---------------------------
select * from A Left Join B On A.AID=B.BID
结果如下:
AID AName BID BName
1 李明 1 明明
2 王磊 2 李会军
3 李鹏 3 赵勇
4 胡军 null null
所影响的行数为4行
结果分析:
Left Join 是以A表为基础的,A可以看作是左表,B可以看作是右表,Left Join是以左表为准的.
也可以简单的理解为,左表(A)的记录将会全部显示出来,而右表(B)只会显示符合搜索条件的记录;(如:A.AID=B.BID)
Right Join
---------------------------
select * from A Right Join B On A.AID=B.BID
结果如下:
AID AName BID BName
1 李明 1 明明
2 王磊 2 李会军
3 李鹏 3 赵勇
null null 8 胡军
所影响的行数为4行
结果分析:
和Left Join的结果相反,Right Join 是以右表为基础的,左表不存在的用null来填充;
Inner Join
---------------------------
select * from A Inner Join B On A.AID=B.BID
结果如下:
AID AName BID BName
1 李明 1 明明
2 王磊 2 李会军
3 李鹏 3 赵勇
所影响的行数为3行
结果分析:
怎么,少了一条记录,对了,Inner Join 只是显示出了A表中和B表中符合条件的记录,而不以任何一张表为基准.
三 用法:
From TableName1 Left Join TableName2 On TableName1.Field1 compopr TableName2. Field2
Right Join,Inner Join的用法类似,就不作详细说明了。