The LEFT (OUTER) JOIN Clause


The LEFT (OUTER) JOIN clause returns all records from the left table (table1), and the matching records from the right table (table2). The result is 0 records from the right side, if there is no match.

 SELECT column_name(s)
  FROM table1 LEFT JOIN table2
  ON table1.column_name = table2.column_name;

Below is a selection from the Customers table:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico

Then, look at the selection from the Orders table:

OrderID CustomerID EmployeeID OrderDate ShipperID
10308 2 7 1996-09-18 3
10309 37 3 1996-09-19 1
10310 77 8 1996-09-20 2

The LEFT JOIN clause returns all records from the left table (Customers), even if there are no matches in the right table (Orders).

SELECT Customers.CustomerName, Orders.OrderID
  FROM Customers LEFT JOIN Orders
  ON Customers.CustomerID = Orders.CustomerID
  ORDER BY Customers.CustomerName;

and it will produce something like this:

CustomerName OrderID
Alfreds Futterkiste
Ana Trujillo Emparedados y helados 10308
Antonio Moreno Taquería


Demonstration
Below is an SQL test area from W3Schools, which uses the well-known Northwind sample database. The tables here are for read only because of the problem of embedding the scripts. For a fully working example, check this by using Chrome.

SQL Statement:

Edit the SQL statement and click     to see the result, or  

Result:
The Database includes:
The Database includes:

TablenameRecord
Customers91
Categories8
Employees10
OrderDetails518
Orders196
Products77
Shippers3
Suppliers29





      I told my wife she should embrace her mistakes.    
      She gave me a hug.