文摘:OUTER JOIN

Posted chickenwrap

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文摘:OUTER JOIN相关的知识,希望对你有一定的参考价值。

原文地址:(https://www.w3resource.com/sql/joins/perform-a-full-outer-join.php

 

What is Full Outer Join in SQL?

In SQL the FULL OUTER JOIN combines the results of both left and right outer joins and returns all (matched or unmatched) rows from the tables on both sides of the join clause.

Syntax:

SELECT * 
FROM table1 
FULL OUTER JOIN table2 
ON table1.column_name=table2.column_name;

Syntax diagram - FULL OUTER JOIN

技术分享图片

Example: SQL FULL OUTER JOIN

Let’s combine the same two tables using a full join.

技术分享图片

SQL Code:

SELECT * FROM table_A 
FULL OUTER JOIN table_B 
ON table_A.A=table_B.A;

Output:

技术分享图片

Because this is a full join, all rows (both matching and nonmatching) from both tables are included in the output. There is only one match between table table_A and table table_B, so only one row of output displays values in all columns. All remaining rows of output contain only values from table table_A or table table_B, with the remaining columns set to missing values

only one row of output displays values in all columns explain below -

技术分享图片

Pictorial Presentation: SQL FULL OUTER JOIN

技术分享图片
技术分享图片
技术分享图片

Example: SQL FULL OUTER JOIN between two tables

Here is an example of full outer join in SQL between two tables.

Sample table: foods

 

Sample table: company

 

As we know the FULL OUTER JOIN is the combination of the results of both LEFT OUTER JOIN and RIGHT OUTER JOIN, so, here we are going to describe how FULL OUTER JOIN perform internally.

Pictorial Presentation:

技术分享图片

Here is the SQL statement which returns all rows from the ‘foods‘ table and ‘company‘ table using "FULL OUTER JOIN" clause.

SQL Code:

SELECT a.company_id AS "a.ComID",
a.company_name AS "C_Name",
b.company_id AS "b.ComID", 
b.item_name AS "I_Name" 
FROM   company a 
FULL OUTER JOIN foods b 
ON a.company_id = b.company_id;

Output:

a.ComID    C_Name                    b.ComID    I_Name
---------- ------------------------- ---------- -------------
16         Akas Foods                16         Chex Mix
15         Jack Hill Ltd             15         Cheez-It
15         Jack Hill Ltd             15         BN Biscuit
17         Foodies.                  17         Mighty Munch
15         Jack Hill Ltd             15         Pot Rice
18         Order All                 18         Jaffa Cakes
                                                Salt n Shake
19	     sip-n-Bite.										

FULL OUTER JOIN using WHERE clause

We can include a WHERE clause with a FULL OUTER JOIN to get return only those rows where no matching data between the joining tables are exist.

The following query returns only those company that have no matching food product in foods, as well as that food product in foods that are not matched to the listed company.


SELECT a.company_id AS "a.ComID", 
a.company_name AS "C_Name",
b.company_id AS "b.ComID", 
b.item_name AS "I_Name" 
FROM   company a
FULL OUTER JOIN foods b
ON a.company_id = b.company_id
WHERE a.company_id IS NULL 
OR b.company_id IS NULL 
ORDER BY company_name;

Output:

a.ComID    C_Name                    b.ComID    I_Name
---------- ------------------------- ---------- ---------------
19         sip-n-Bite.
                                                Salt n Shake

FULL OUTER JOIN using UNION clause

A UNION clause can be used as an alternate to get the same result as FULL OUTER JOIN

Here is the example:

技术分享图片

Here is the SQL statement:

SELECT table_a.A,table_a.M,table_b.A,table_b.N 
FROM table_A 
FULL OUTER JOIN table_B 
ON table_A.a=table_b.A 
ORDER BY table_A.A;

FULL OUTER JOIN using LEFT and RIGHT OUTER JOIN and UNION clause

The following code is, the combination of LEFT OUTER JOIN and RIGHT OUTER JOIN and combined by, using UNION clause


SELECT table_a.A,table_a.M,table_b.A,table_b.N 
FROM table_A 
LEFT OUTER JOIN table_B 
ON table_A.a=table_b.A 
UNION 
SELECT table_a.A,table_a.M,table_b.A,table_b.N 
FROM table_A 
RIGHT OUTER JOIN table_B 
ON table_A.a=table_b.A;

技术分享图片

Note: Outputs of the said SQL statement shown here is taken by using Oracle Database 10g Express Edition.

Click on the following to get the slides presentation of all JOINS -

技术分享图片

Here is a new document which is a collection of questions with short and simple answers, useful for learning SQL as well as for interviews.



以上是关于文摘:OUTER JOIN的主要内容,如果未能解决你的问题,请参考以下文章

Inner Join, Left Outer Join和Association的区别

inner join 和outer join的区别

SQL中inner join,outer join和cross join的区别

SQL中inner join,outer join和cross join的区别

Pandas文摘:Join And Merge Pandas Dataframe

SQL中inner join,outer join和cross join的区别