Understanding INNER JOIN in SQL: A Complete Guide

Rumman Ansari   Software Engineer   2025-04-07 02:24:17   5887  Share
Subject Syllabus DetailsSubject Details 1 Questions
☰ TContent
☰Fullscreen

An inner join returns only the rows where there is a match in both tables.


The most important and frequently used of the joins is the INNER JOIN. They are also referred to as an EQUIJOIN.

The INNER JOIN creates a new result table by combining column values of two tables (table1 and table2) based upon the join-predicate. The query compares each row of table1 with each row of table2 to find all pairs of rows which satisfy the join-predicate. When the join-predicate is satisfied, column values for each matched pair of rows of A and B are combined into a result row.

join in sql

Syntax: Inner Join

<span class="pln">
SELECT column_name</span><span class="pun">(</span><span class="pln">s</span><span class="pun">)</span><span class="pln">
FROM table1
INNER JOIN table2
ON table1</span><span class="pun">.</span><span class="pln">column_name </span><span class="pun">=</span><span class="pln"> table2</span><span class="pun">.</span><span class="pln">column_name</span><span class="pun">;</span><span class="pln">
</span>

OR

<span class="pln">
SELECT </span><span class="typ">ColumnList</span><span class="pln">
FROM </span><span class="typ">LeftTableName</span><span class="pln">
JOIN_TYPE </span><span class="typ">RightTableName</span><span class="pln">
ON </span><span class="typ">JoinCondition</span><span class="pln">
</span>

The INNER keyword is optional in SQL when performing an inner join. By default, the JOIN clause performs an inner join, so specifying INNER is redundant.


Table 1: Left Table: Subject

SubjectId

SubjectName

1

C

2

Java

3

Python

4

PHP

Table 2: Right Table: Chapter

ChapterId

ChapterName

SubjectId

1

Introduction C

1

2

Datatypes Java

2

Example: Left Join

Code:

<span class="pln">
SELECT </span><span class="pun">*</span><span class="pln">
FROM </span><span class="typ">Subjects</span><span class="pln">
INNER JOIN </span><span class="typ">Chapters</span><span class="pln">
ON </span><span class="typ">Subjects</span><span class="pun">.</span><span class="typ">SubjectId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Chapters</span><span class="pun">.</span><span class="typ">SubjectId</span><span class="pun">;</span><span class="pln">
</span>

Output:

The above code will produce the following result-

SubjectId

SubjectName

ChapterId

ChapterName

SubjectId

1

C

1

Introduction C

1

2

Java

2

Datatypes Java

2


You can use aliases like below, also you can select specific columns which is required.

Example: using alias

Code:

<span class="pln">
SELECT A</span><span class="pun">.</span><span class="typ">SubjectId</span><span class="pun">,</span><span class="pln">A</span><span class="pun">.</span><span class="typ">SubjectName</span><span class="pun">,</span><span class="pln"> B</span><span class="pun">.</span><span class="typ">ChapterName</span><span class="pln">
FROM </span><span class="typ">Subjects</span><span class="pln"> AS A
INNER JOIN </span><span class="typ">Chapters</span><span class="pln"> AS B
ON A</span><span class="pun">.</span><span class="typ">SubjectId</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> B</span><span class="pun">.</span><span class="typ">SubjectId</span><span class="pun">;</span><span class="pln">
</span>

Output:

The above code will produce the following result-

SubjectId

SubjectName

ChapterName

1

C

Introduction C

2

Java

Datatypes Java


Prerequisite Codes

Code:

<span class="pln">  

USE </span><span class="typ">SQLExamples</span><span class="pln">

DROP TABLE </span><span class="typ">Subjects</span><span class="pln">
DROP TABLE </span><span class="typ">Chapters</span><span class="pln">

CREATE TABLE </span><span class="typ">Subjects</span><span class="pun">(</span><span class="pln">
	</span><span class="typ">SubjectId</span><span class="pln"> INT</span><span class="pun">,</span><span class="pln">	
	</span><span class="typ">SubjectName</span><span class="pln"> VARCHAR</span><span class="pun">(</span><span class="lit">30</span><span class="pun">)</span><span class="pln">
</span><span class="pun">)</span><span class="pln">


INSERT INTO </span><span class="typ">Subjects</span><span class="pln"> VALUES 
</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="str">'C'</span><span class="pun">),</span><span class="pln">
</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="str">'Java'</span><span class="pun">),</span><span class="pln">
</span><span class="pun">(</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> </span><span class="str">'Python'</span><span class="pun">),</span><span class="pln">
</span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="pln"> </span><span class="str">'PHP'</span><span class="pun">)</span><span class="pln">

SELECT </span><span class="pun">*</span><span class="pln"> FROM </span><span class="typ">Subjects</span><span class="pln">

CREATE TABLE </span><span class="typ">Chapters</span><span class="pun">(</span><span class="pln">
	</span><span class="typ">ChapterId</span><span class="pln"> INT</span><span class="pun">,</span><span class="pln">	
	</span><span class="typ">ChapterName</span><span class="pln"> VARCHAR</span><span class="pun">(</span><span class="lit">30</span><span class="pun">),</span><span class="pln">
	</span><span class="typ">SubjectId</span><span class="pln"> </span><span class="kwd">int</span><span class="pun">,</span><span class="pln">
</span><span class="pun">)</span><span class="pln">
  

INSERT INTO </span><span class="typ">Chapters</span><span class="pln"> VALUES
</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="str">'Introduction C'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">),</span><span class="pln"> 
</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="str">'Datatypes Java'</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln"> 

SELECT </span><span class="pun">*</span><span class="pln"> FROM </span><span class="typ">Subjects</span><span class="pln">
SELECT </span><span class="pun">*</span><span class="pln"> FROM </span><span class="typ">Chapters</span><span class="pln"> 

</span>


No Program Data.

Stay Ahead of the Curve! Check out these trending topics and sharpen your skills.