What is the difference between INNER JOIN, LEFT JOIN, and RIGHT JOIN?
Posted by PaulAnd
Last Updated: June 18, 2024
In SQL, joins are used to combine records from two or more tables based on a related column between them. Here are the differences between INNER JOIN, LEFT JOIN, and RIGHT JOIN:
1. INNER JOIN
- Definition: An INNER JOIN returns only the rows that have matching values in both tables involved in the join. - Use Case: It is used when you want to retrieve records with relevance in both tables. - Example: If you have a Customers table and an Orders table, an INNER JOIN will return only customers who have placed orders.
SELECT Customers.Name, Orders.OrderID
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
2. LEFT JOIN (or LEFT OUTER JOIN)
- Definition: A LEFT JOIN returns all the rows from the left table, and the matched rows from the right table. If there is no match, NULL values will appear for columns from the right table. - Use Case: It is used when you want to retrieve all records from the left table even if there are no corresponding records in the right table. - Example: Continuing with the previous example, a LEFT JOIN will return all customers, including those who have not placed any orders.
SELECT Customers.Name, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
3. RIGHT JOIN (or RIGHT OUTER JOIN)
- Definition: A RIGHT JOIN returns all the rows from the right table, and the matched rows from the left table. If there is no match, NULL values will appear for columns from the left table. - Use Case: It is used when you want to retrieve all records from the right table even if there are no corresponding records in the left table. - Example: In the context of our example, a RIGHT JOIN will return all orders, including those that do not have corresponding customers (theoretically possible if, for instance, you allow orders without registered customers).
SELECT Customers.Name, Orders.OrderID
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
Summary:
- INNER JOIN: Only matching rows from both tables. - LEFT JOIN: All rows from the left table and matched rows from the right table (with NULLs where there’s no match). - RIGHT JOIN: All rows from the right table and matched rows from the left table (with NULLs where there’s no match). Understanding these differences is crucial for effective database querying and data manipulation.
Related Content