inner join 和 left join 的 区别

inner join   :

The INNER JOIN keyword selects all rows from both tables as long as there is a match between the columns in both tables.

SQL INNER JOIN

left join :

The LEFT JOIN keyword returns all rows from the left table (table1), with the matching rows in the right table (table2). The result is NULL in the right side when there is no match.

SQL LEFT JOIN

以 sql server NorthWind 数据库为例 :   如果用  inner join

SELECT Customers.CompanyName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CompanyName;

得到

Alfreds Futterkiste            10643
Alfreds Futterkiste            10692
Alfreds Futterkiste            10702
Alfreds Futterkiste            10835
Alfreds Futterkiste            10952
Alfreds Futterkiste            11011
Ana Trujillo Emparedados y helados    10308
Ana Trujillo Emparedados y helados    10625
Ana Trujillo Emparedados y helados    10759
Ana Trujillo Emparedados y helados    10926
Antonio Moreno Taquería          10365
Antonio Moreno Taquería          10507
Antonio Moreno Taquería          10535
Antonio Moreno Taquería          10573
Antonio Moreno Taquería          10677
Antonio Moreno Taquería          10682

............    共830 条记录  ,意思是查出所有  有销售记录的customer 及其 所有的orderID

如果用  left  join

SELECT Customers.CompanyName, Orders.OrderID
FROM Customers
left JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CompanyName;

会得到     832 条记录  ,  比 inner join 多2条是因为: 在customer表中, 有2个customer 并无销售order , 但因为是left join ,

这两个customer 也被包括在结果集之中。

left join 与 left outer join 无区别 , 是后者的简写 。

原文地址:https://www.cnblogs.com/lthxk-yl/p/3564523.html