The FULL OUTER JOIN keyword returns all records when there is a match in left (table1) or right (table2) table records. FULL OUTER JOIN and FULL JOIN are the same.
FULL OUTER JOIN can potentially return very large result-sets. Because, FULL OUTER JOIN returns all matching records from both tables whether the other table matches or not.
SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name WHERE condition; |
Let's look at the "Orders" table data below:
Orderid | Customernumber | Orderdate |
---|---|---|
1001 | 10 | 2020-09-08 |
1002 | 99 | 2020-09-01 |
1003 | 17 | 2020-08-25 |
1004 | 76 | 2020-09-19 |
1005 | 44 | 2020-09-25 |
Let's look at the "Customers" table data below:
Customernumber | Customername | Country |
---|---|---|
76 | Jack | America |
17 | Jancy | Germany |
20 | Carmen | Russia |
10 | Robert | India |
99 | Brian | China |
Notice that the "Customernumber" column in the "Orders" table refers to the "Customernumber" in the "Customers" table. The relationship between the two tables above is the "Customernumber" column.
Let us see how to create SQL statement that will selects all customers, and all orders:
SELECT Customers.Customername, Orders.Orderid FROM Customers FULL OUTER JOIN Orders ON Customers.Customernumber = Orders.Customernumber ORDER BY Customers.Customername; |
Customername | Orderid |
---|---|
Brian | 1002 |
Carmen | null |
Jack | 1004 |
Jancy | 1003 |
Robert | 1001 |
null | 1005 |
If you have any doubts or queries related to this chapter, get them clarified from our Mainframe experts on ibmmainframer Community!