My SQL | LEFT JOIN
Start your free 7-days trial now!
MySQL's LEFT JOIN
clause returns all rows from the left table and records that match from the right table. NULL
will be used for records that have no matching record in the right table. LEFT JOIN
is also referred to as LEFT OUTER JOIN
.
Syntax
SELECT column_name(s)FROM left_tableLEFT JOIN right_tableON left_table.column = right_table.column;
Examples
Consider the following table about products bought by some customers:
id | product | bought_by |
---|---|---|
1 | computer | 1 |
2 | hair dryer | 3 |
The above sample table can be created using the code here.
Also consider the following table containing customer information:
id | name | age |
---|---|---|
1 | alex | 15 |
2 | bob | 25 |
3 | cathy | 30 |
The above sample table can be created using the code here.
Basic usage
To perform a LEFT JOIN
with customer
as the main (left) table and product
as the secondary (right) table:
SELECT c.id, c.name, c.age, p.name AS product_name FROM customer cLEFT JOIN product pON c.id = p.bought_by;
+----+-----------+------+--------------+| id | name | age | product_name |+----+-----------+------+--------------+| 1 | alex | 15 | computer || 3 | cathy | 30 | hair dryer || 2 | bob | 25 | NULL |+----+-----------+------+--------------+
Note that we return all three records from the left table customer
and matching records from the right table (i.e. where value of id
in customer
table is equal to value of bought_by
in products
table). As bob
did not have any matching record in the right table (he did not buy anything!) NULL
is returned.
We can also perform LEFT JOIN
using more than two tables. However, there will always be one main table (all its rows will be present in the result), while the others will be secondary (rows will only appear if there are matches else NULL
).