MySQL - Inner Join
The INNER JOIN keyword return rows when there is at least one match in both tables.
MySQL INNER JOIN Syntax
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
Note: INNER JOIN is the same as JOIN.
MySQL Inner Join Example
The "Persons" table:
| P_Id | FirstName | LastName | Address | City |
| 1 | PutuSanjaya | Jl. Sudirman 20 | Denpasar |
| 2 | MadeSanjaya | Jl. Teuku Umar 22 | Denpasar |
| 3 | NyomanSanjaya | Jl. Imam Bonjol 11 | Denpasar |
The "Orders" table:
| O_Id | OrderNo | P_Id | >
| 1 | 23238 | 3 |
| 2 | 79382 | 3 |
| 3 | 48592 | 1 |
| 4 | 45645 | 2 |
| 5 | 38458 | 4 |
Now we want to list all the persons with any orders. We use the following SELECT statement:
SELECT Persons.FirstName, Persons.LastName, Orders.OrderNo
FROM Persons INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.FirstName
The result-set will look like this:
| FirstName | LastName | OrderNo |
| Made | Sanjaya | 45645 |
| Nyoman | Sanjaya | 23238 |
| Nyoman | Sanjaya | 79382 |
| Putu | Sanjaya | 48592 |
The INNER JOIN keyword return rows when there is at least one match in both tables. If there are rows in "Persons" that do not have matches in "Orders", those rows will NOT be listed.