1. sql
  2. /joins
  3. /inner-join



In SQL, an INNER JOIN is a way to combine rows from two or more tables based on a related column between them. The basic syntax of an INNER JOIN is as follows:

SELECT column1, column2, ...
FROM table1
INNER JOIN table2 
ON table1.related_column1 = table2.related_column2;

The ON keyword is used to specify the condition that relates the two tables. The result of the INNER JOIN will include only the rows from both tables where the condition is true.


Suppose you have two tables, customers and orders, with the following data:

customers table:


orders table:


If you want to find the names of customers along with the order details, you can use an INNER JOIN as follows:

SELECT customers.name, orders.id, orders.quantity 
FROM customers 
INNER JOIN orders 
ON customers.id = orders.customer_id;

This query would return the following result:


As you can see, the result includes only the rows where the id from the customers table matches the customer_id from the orders table. The result includes the columns from both tables: name from the customers table and id and quantity from the orders table.

As for the difference between INNER JOIN and FULL OUTER JOIN, the FULL OUTER JOIN returns all rows from both tables. If there is no match, NULL values will be returned for the right or left table.

Best Practices

There are a few best practices to keep in mind when using SQL INNER JOINs:

  • Use indexes: Make sure that the columns that are being used to join the tables have indexes. This can greatly improve the performance of the query.

  • Limit the number of joined tables: Joining a large number of tables can slow down the query and make it more difficult to read and understand. Try to limit the number of tables to only the necessary ones.

  • Use aliases: When joining multiple tables, it's a good idea to use aliases for the table names to make the query more readable.

  • Use ON rather than WHERE: When joining tables, it's generally better to use the ON clause to specify the join condition, rather than using the WHERE clause. This is because the ON clause is only used to filter rows before the join occurs, while the WHERE clause is used to filter rows after the join has occurred.

  • Be explicit with your join conditions: Avoid using multiple conditions within a ON clause, instead use explicit and simple join conditions. It will be easier to read and understand.

  • Don't use SELECT *: It is more beneficial to select only the columns that you need for your query, rather than using SELECT *, as this can slow down the query and increase the amount of data that needs to be sifted through.