Showing posts with label MySQL Inner Join. Show all posts
Showing posts with label MySQL Inner Join. Show all posts

Thursday, 1 June 2023

MySQL Inner Join and Outer Join

In MySQL, an inner join is used to combine rows from two or more tables, based on a related column between them. It returns all rows from both tables where the join condition is satisfied.


An outer join, on the other hand, is used to combine rows from two or more tables, based on a related column between them. It returns all rows from both tables, even if there are no matching rows in the other table.


The syntax of a MySQL inner join query is as follows:


SELECT column_list

FROM table_name1

INNER JOIN table_name2

ON table_name1.column_name = table_name2.column_name;


The column_list is a list of columns that you want to retrieve. You can specify all columns by using the asterisk (*), or you can specify specific columns.


The table_name1 and table_name2 are the names of the tables that you want to join.


The INNER keyword specifies that you want to perform an inner join.


The ON clause specifies the join condition.


For example, the following query will return all rows from the users table and the orders table where the id column in the users table is equal to the user_id column in the orders table:


SELECT *

FROM users

INNER JOIN orders

ON users.id = orders.user_id;


The syntax of a MySQL outer join query is as follows:


SELECT column_list

FROM table_name1

[LEFT | RIGHT | FULL] JOIN table_name2

ON table_name1.column_name = table_name2.column_name;


The column_list is a list of columns that you want to retrieve. You can specify all columns by using the asterisk (*), or you can specify specific columns.


The table_name1 and table_name2 are the names of the tables that you want to join.


The LEFT, RIGHT, and FULL keywords specify the type of join that you want to perform.


The ON clause specifies the join condition.


For example, the following query will return all rows from the users table, and the matched rows from the orders table:


SELECT *

FROM users

LEFT JOIN orders

ON users.id = orders.user_id;


This query will return all rows from the users table, even if there are no matching rows in the orders table. For any rows in the users table that do not have a matching row in the orders table, the columns from the orders table will be NULL.


The following query will return all rows from the orders table, and the matched rows from the users table:



SELECT *

FROM orders

RIGHT JOIN users

ON users.id = orders.user_id;


This query will return all rows from the orders table, even if there are no matching rows in the users table. For any rows in the orders table that do not have a matching row in the users table, the columns from the users table will be NULL.


The following query will return all rows from both tables, even if there are no matching rows in the other table:


SELECT *

FROM users

FULL JOIN orders

ON users.id = orders.user_id;


This query will return all rows from both tables, even if there are no matching rows in the other table. For any rows in either table that do not have a matching row in the other table, the columns from the other table will be NULL.


I hope this helps! Let me know if you have any other questions.