The FULL JOIN (or FULL OUTER JOIN) in SQL returns all rows from both tables, combining matched rows and filling unmatched rows with NULL values. It is basically the combination of LEFT JOIN and RIGHT JOIN
- Retrieves all rows from both tables.
- Matches rows where conditions meet.
- Fills NULLs where no match exists.
- Combines results of LEFT JOIN + RIGHT JOIN.
- Can be used sequentially for multiple tables.
Full JoinSyntax:
SELECT columns
FROM table1
FULL JOIN table2
ON table1.column = table2.column;
Parameters:
SELECT columns
: Specifies the columns to retrieve.FROM table1
: The first table to be joined.FULL JOIN table2
: Specifies the second table to join with the first table using a FULL JOIN.ON table1.column = table2.column
: Defines the condition to match rows between the two tables.
This query retrieves all records from both table1
and table2
, returning NULL where there are no matches.
Examples of SQL FULL JOIN
Let's look at some examples of the FULL JOIN in SQL and understand it's working. First, let's create a demo database and two tables on which we will perform the JOIN.
1. Books Table
This table Represents the list of books in the system
BOOK_ID | BOOK_NAME | ISSUED_ON | DUE_DATE |
---|
1 | RD SHARMA | 2023-01-01 | 2023-01-08 |
2 | GATE CRACKER | 2023-02-02 | 2023-02-09 |
3 | MORRIS MANO | 2023-03-03 | 2023-03-10 |
4 | NK PUBLICATIONS | 2023-04-04 | 2023-04-11 |
5 | BIG BANG THEORY | 2023-05-05 | 2023-05-12 |
2. Authors Table
This table represents the authors who have written the books.
AUTHOR_ID | AUTHOR_NAME |
---|
1 | Ram Kumar |
2 | Shyam Sunder |
3 | Sita Singh |
4 | Mohan Gupta |
5 | Raj Kapoor |
3. Publishers
Table
This table represents the authors who have published the books.
PUBLISHER_ID | PUBLISHER_NAME |
---|
1 | Pearson |
2 | Wiley |
3 | McGraw-Hill |
4 | Springer |
5 | Elsevier |
Example 1: FULL JOIN on Multiple Tables
In this example, we perform a FULL JOIN across the Books, Authors, and Publishers tables to combine all related records into a single result set.
Query:
SELECT
b.BOOK_ID,
b.BOOK_NAME,
a.AUTHOR_NAME,
p.PUBLISHER_NAME
FROM Books b
FULL JOIN Authors a ON b.BOOK_ID = a.AUTHOR_ID
FULL JOIN Publishers p ON b.BOOK_ID = p.PUBLISHER_ID;
Output:
BOOK_ID | BOOK_NAME | AUTHOR_NAME | PUBLISHER_NAME |
---|
1 | RD SHARMA | Ram Kumar | Pearson |
2 | GATE CRACKER | Shyam Sunder | Wiley |
3 | MORRIS MANO | Sita Singh | McGraw-Hill |
4 | NK PUBLICATIONS | Mohan Gupta | Springer |
5 | BIG BANG THEORY | Raj Kapoor | Elsevier |
Explanation:
- Books uses
BOOK_ID
. - Authors uses
AUTHOR_ID
, which matches BOOK_ID
. - Publishers uses
PUBLISHER_ID
, also matching BOOK_ID
. - FULL JOIN ensures that all rows are included even if a match is missing.
Example 2: FULL JOIN with WHERE Clause
Now, we want to filter the results from the above join based on a specific condition. We will select only books that have "Sharma" in the book name.
Query:
SELECT
b.BOOK_ID,
b.BOOK_NAME,
a.AUTHOR_NAME,
p.PUBLISHER_NAME
FROM Books b
FULL JOIN Authors a ON b.BOOK_ID = a.AUTHOR_ID
FULL JOIN Publishers p ON b.BOOK_ID = p.PUBLISHER_ID
WHERE b.BOOK_NAME LIKE '%Sharma%';
Output:
BOOK_ID | BOOK_NAME | AUTHOR_NAME | PUBLISHER_NAME |
---|
1 | RD SHARMA | Ram Kumar | Pearson |
Explanation:
In this example, the WHERE clause filters out all books that do not contain the word "Sharma" in their name. After applying the filter, only the record for "RD SHARMA" remains.
Explore
SQL Tutorial
6 min read
Basics
Queries & Operations
SQL Joins & Functions
Data Constraints & Aggregate Functions
Advanced SQL Topics
Database Design & Security