MySQL | RIGHT JOIN
Start your free 7-days trial now!
MySQL's RIGHT JOIN clause returns all rows from the right table and matching records from the left table. NULL will be used for records that have no matching record in the left table. RIGHT JOIN is also referred to as RIGHT OUTER JOIN.
Syntax
SELECT column_name(s)FROM left_tableRIGHT 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 RIGHT JOIN with product as the left table and customer as the right (main) table:
SELECT c.id, c.name, c.age, p.name AS product_name FROM product pRIGHT JOIN customer cON c.id = p.bought_by;
+----+-----------+------+--------------+| id | name | age | product_name |+----+-----------+------+--------------+| 1 | alex | 15 | computer || 3 | cathy | 30 | hair dryer || 2 | bob | 25 | NULL |+----+-----------+------+--------------+
We return all three customer records from the right table customer and the corresponding products they have purchased from product (left table). As bob has not purchased any product, NULL is returned for his corresponding product_name value.
We can also perform RIGHT 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).