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.

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 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 无区别 , 是后者的简写 。
原文:http://www.cnblogs.com/lthxk-yl/p/3564523.html