SQL Server中左连接和右连接的区别
我知道SQL Server中的连接。
例如。 有两个表格Table1,Table2。
有表结构如下。
create table Table1 (id int, Name varchar (10))
create table Table2 (id int, Name varchar (10))
表1数据如下:
Id Name
-------------
1 A
2 B
表2数据如下:
Id Name
-------------
1 A
2 B
3 C
如果我执行下面提到的SQL语句,则两个输出都是相同的
select *
from Table1
left join Table2 on Table1.id = Table2.id
select *
from Table2
right join Table1 on Table1.id = Table2.id
请解释上面的sql语句中左和右连接的区别。
Select * from Table1 left join Table2 ...
和
Select * from Table2 right join Table1 ...
确实完全可以互换。 然而,尝试Table2 left join Table1
(或其相同的对, Table1 right join Table2
)以查看差异。 这个查询应该给你更多的行,因为Table2包含一个id不在Table1中的行。
Codeproject有这张图解释了SQL连接的简单基础,取自:http://www.codeproject.com/KB/database/Visual_SQL_Joins.aspx
您正在从中获取数据的表格是'LEFT'。
你加入的表是'RIGHT'。
左连接:从左表和(仅)匹配右表中的所有项目。
右连接:从右表中选取所有项目,并且(仅)从左表中匹配项目。
所以:
Select * from Table1 left join Table2 on Table1.id = Table2.id
得到:
Id Name
-------------
1 A
2 B
但:
Select * from Table1 right join Table2 on Table1.id = Table2.id
得到:
Id Name
-------------
1 A
2 B
3 C
你是正确的加入表与更少的行与更少的行上的行
和
再次,在表格中留下更少行的连接表,更多行
尝试:
If Table1.Rows.Count > Table2.Rows.Count Then
' Left Join
Else
' Right Join
End If
链接地址: http://www.djcxy.com/p/86257.html
上一篇: Difference between left join and right join in SQL Server