SQL FULL OUTER JOIN
Keyword
SQL FULL OUTER JOIN Keyword
The FULL OUTER JOIN keyword returns rows when there is a match in either the left table (table1) or the right table (table2).
The FULL OUTER JOIN keyword combines the results of both LEFT JOIN and RIGHT JOIN.
SQL FULL OUTER JOIN Syntax
Demo Database
In this tutorial, we will use the tutorialpro sample database.
Below is the data from the "Websites" table:
+----+--------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | Taobao | https://www.taobao.com/ | 13 | CN |
| 3 | tutorialpro.org | http://www.tutorialpro.org/ | 4689 | CN |
| 4 | Weibo | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | Stackoverflow | http://stackoverflow.com/ | 0 | IND |
+----+---------------+---------------------------+-------+---------+
Below is the data from the "access_log" website access record table:
+-----+---------+-------+------------+
| aid | site_id | count | date |
+-----+---------+-------+------------+
| 1 | 1 | 45 | 2016-05-10 |
| 2 | 3 | 100 | 2016-05-13 |
| 3 | 1 | 230 | 2016-05-14 |
| 4 | 2 | 10 | 2016-05-14 |
| 5 | 5 | 205 | 2016-05-14 |
| 6 | 4 | 13 | 2016-05-15 |
| 7 | 3 | 220 | 2016-05-15 |
| 8 | 5 | 545 | 2016-05-16 |
| 9 | 3 | 201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)
SQL FULL OUTER JOIN Example
The following SQL statement selects all website access records.
MySQL does not support FULL OUTER JOIN, you can test the following example in SQL Server.
Example
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
FULL OUTER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
Note: The FULL OUTER JOIN keyword returns all rows from the left table (Websites) and the right table (access_log). If there is no match in the "Websites" table for a row in the "access_log" table or no match in the "access_log" table for a row in the "Websites" table, those rows will also be listed.