SQL Full Join

时间:2020-02-23 14:32:27  来源:igfitidea点击:

在本文中,我们将重点关注SQL Full Join。

之前的教程中我们知道,SQL Joins使我们能够基于预定义的条件将不同列中的数据值关联在一起。

今天,我们将看一下Full Join。

了解SQL完全联接

"完全连接"使数据库管理员可以根据指定条件将几张表的数据记录完全合并在一起。

完全加入

在完全连接中,所有匹配记录均从两个表(即右表和左表)中返回。
因此,完全连接被分别视为左连接和右连接的属性的组合。

了解了完全连接的工作原理之后,现在让我们集中讨论下一部分中的结构。

SQL中的完全连接语法

看看下面的语法!

SELECT columns
FROM table_1
FULL JOIN table_2
ON table_1.column-name = table_2.column-name;

从上面的命令中,返回以下值

  • 数据库的左表和右表中的所有匹配数据记录。

  • 如果任一表(左或者右)的任何记录均与其他记录不匹配,则显示NULL值。

因此,它是左连接和右连接的总和。

在SQL中实现完全联接

注意:MYSQL不支持完全连接。
相反,SQL UNION ALL子句用于执行完全连接的操作,如下面的示例所示。

最初,我们使用SQL创建和插入查询创建了两个表" Stud_Info"和" Stud_score",以显示一组学生的数据。

create table Stud_Info(stud_id integer, Name varchar(200), sub varchar(200));

insert into Stud_Info(stud_id, Name, sub) values(001, 'John','Maths');

insert into Stud_Info(stud_id, Name, sub) values(002, 'Mary','Science');

insert into Stud_Info(stud_id, Name, sub) values(003, 'Ray','Social Science');

insert into Stud_Info(stud_id, Name, sub) values(004, 'Jim','History');

insert into Stud_Info(stud_id, Name, sub) values(005, 'Rick','Geo');

create table Stud_score(stud_id integer, Score Integer);
insert into Stud_score(stud_id, score) values(001, 25);
insert into Stud_score(stud_id, score) values(002, 45);
insert into Stud_score(stud_id, score) values(005, 46);
insert into Stud_score(stud_id, score) values(004, 68);
insert into Stud_score(stud_id, score) values(007, 100);

表1 Stud_Info

表2 Stud_score

现在,让我们在上表中应用完全连接的概念,如下所示

SELECT Stud_Info.stud_id, Stud_Info.Name, Stud_score.score
FROM Stud_Info
LEFT JOIN Stud_score
ON Stud_Info.stud_id = Stud_score.stud_id
UNION ALL
SELECT Stud_Info.stud_id, Stud_Info.Name, Stud_score.score
FROM Stud_Info
RIGHT JOIN Stud_score ON Stud_Info.stud_id = Stud_score.stud_id