SQL Tutorial
The INNER JOIN
keyword in SQL is used to combine rows from two or more tables, based on a related column between them. This keyword selects records that have matching values in both tables.
The basic syntax of INNER JOIN
is as follows:
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
Example:
Consider the following two tables:
Orders
table:
OrderID | CustomerID | OrderAmount |
---|---|---|
1 | 3 | 100 |
2 | 1 | 160 |
3 | 2 | 70 |
4 | 5 | 240 |
Customers
table:
CustomerID | Name |
---|---|
1 | John |
2 | Jane |
3 | Alice |
4 | Bob |
We can use INNER JOIN
to combine these tables based on the CustomerID
:
SELECT Orders.OrderID, Customers.Name, Orders.OrderAmount FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
The result would be:
OrderID | Name | OrderAmount |
---|---|---|
1 | Alice | 100 |
2 | John | 160 |
3 | Jane | 70 |
This query selects all orders, along with the names of the customers who placed them.
Note:
INNER JOIN
is the most common type of join, and it is also known simply as JOIN
.
INNER JOIN
selects records that have matching values in both tables. If there is a record in the first table that matches the WHERE
clause, but there is no record in the second table that matches the WHERE
clause, the INNER JOIN
will not select that record.
As always, the exact syntax may vary between different SQL dialects, so be sure to consult the documentation for the SQL dialect you're using.
Joining Tables with INNER JOIN:
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
SQL INNER JOIN Example:
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
INNER JOIN vs LEFT JOIN vs RIGHT JOIN:
Description: INNER JOIN retrieves only matching rows between tables, while LEFT JOIN and RIGHT JOIN include unmatched rows from the left or right table, respectively.
Code Example (LEFT JOIN):
SELECT Orders.OrderID, Customers.CustomerName FROM Orders LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Code Example (RIGHT JOIN):
SELECT Orders.OrderID, Customers.CustomerName FROM Orders RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Using WHERE Clause with INNER JOIN:
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID WHERE Orders.OrderDate > '2022-01-01';
Handling NULL Values in INNER JOIN:
SELECT Orders.OrderID, COALESCE(Customers.CustomerName, 'Unknown') AS CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Multiple Conditions in INNER JOIN Statement:
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID AND Orders.Shipped = 1;
INNER JOIN with Multiple Tables in SQL:
SELECT Orders.OrderID, Customers.CustomerName, Products.ProductName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID INNER JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID;