Mysql's Join Types Comparison

Input Tables

|400*400

INNER JOIN

INNER JOIN returns only the rows where there’s a match between both tables based on the join condition.

SELECT A.ID, A.Name, B.ID, B.Department
FROM A
INNER JOIN B ON A.ID = B.ID  

|400*400

LEFT JOIN

LEFT JOIN returns all rows from the left table (A), and the matched rows from the right table (B). If there’s no match, NULL values are used for the right table columns.

SELECT A.ID, A.Name, B.ID, B.Department
FROM A
LEFT JOIN B ON A.ID = B.ID  

400*400

RIGHT JOIN

RIGHT JOIN returns all rows from the right table (B), and the matched rows from the left table (A). If there’s no match, NULL values are used for the left table columns.

SELECT A.ID, A.Name, B.ID, B.Department  
FROM A  
RIGHT JOIN B ON A.ID = B.ID

400*400

FULL JOIN

FULL JOIN returns all rows from both tables, matching rows where possible and using NULL values where there is no match.

Note: MySQL doesn’t directly support FULL JOIN, but it can be simulated using a combination of LEFT JOIN, UNION, and RIGHT JOIN:

SELECT A.ID, A.Name, B.ID, B.Department  
FROM A  
LEFT JOIN B ON A.ID = B.ID  
UNION  
SELECT A.ID, A.Name, B.ID, B.Department  
FROM B  
LEFT JOIN A ON A.ID = B.ID  
WHERE A.ID IS NULL

400*400

CROSS JOIN

CROSS JOIN returns the Cartesian product of both tables, combining each row from the first table with every row from the second table.

SELECT A.ID, A.Name, B.ID, B.Department  
FROM A  
CROSS JOIN B

400*400