左连接,全连接,内连接在联合查询时经常使用,本文采用官方所用的Table,使用初学者易于理解的通俗说法来解释其定义与区别。
表:Persons如下
Id_P | LastName | FirstName | Address | City |
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
表:Orders如下
Id_O | OrderNo | Id_P |
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
1,Left Join
Left Join,左连接,全称是左外连接(Left Outer Join),是外连接的一种。
左连接以左表为主,使用左表中的每一条记录与右表中的记录去匹配,如符合匹配,就将左表以及右表中的这条记录的字段按要求返回,
若不符合匹配,则只返回左表记录的中字段,右表记录中的字段则返回空值。
For example:
SELECT Persons.Id_P,Persons.LastName, Persons.FirstName, Orders.Id_O,Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.Id_P
返回结果如下:
注:Right Join则与Left Join类似,只是将方向正好相反。
2,Full Join
Full Join,全连接,全称是全外连接(Full Outer Join),是外连接的一种。
全连接可理解为先使用左表中的每一条记录与右表中的记录去匹配,如符合匹配,就将左表以及右表中的这条记录的字段按要求返回,
若不符合匹配,则只返回左表记录的中字段,右表记录中的字段则返回空值。
然后再将右表中没有匹配过的记录返回,相应的左表记录中的字段则返回空值。
For example:
SELECT Persons.Id_P,Persons.LastName, Persons.FirstName,Orders.Id_O ,Orders.OrderNo FROM Persons FULL JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.Id_P
返回结果如下:
3,Inner Join
Inner Join,内连接,可理解为使用左表中的每一条记录与右表中的记录去匹配,如符合匹配,就将左表以及右表中的这条记录的字段按要求返回
不符合匹配的话则不返回。
For example:
SELECT Persons.Id_P,Persons.LastName, Persons.FirstName,Orders.Id_O ,Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.Id_P
返回结果如下:
注:上面的SQL与两个表做笛卡儿积连接,再按where子句筛选的返回结果是一样的:
SELECT Persons.Id_P,Persons.LastName, Persons.FirstName,Orders.Id_O ,Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P=Orders.Id_P ORDER BY Persons.Id_P
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29367946/viewspace-1687866/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29367946/viewspace-1687866/