7.10 SQL Server全外连接查询
SQL Server Full Outer Join
SQL Server全外连接简介
全外连接也称全连接,效果很像左连接和右连接的结合起来。
当左表中的行不存在匹配行时,右表的列将包含NULL。同样,当右表中的行不存在匹配行时,左表的列将包含NULL。
语法:
SELECT select_list FROM T1 FULL OUTER JOIN T2 ON condition;
同样OUTER
关键字可省略:
SELECT select_list FROM T1 FULL JOIN T2 ON condition;
语法中:
- 首先在FROM子句中指定左表T1。
- 然后指定右表T2和连接条件。
下面的维恩图解说明了FULL OUTER JOIN
的结果:
全连接示例
先给示例创建几张新表:
首先,创建一个名为pm
(project management)的架构,代表项目管理:
CREATE SCHEMA pm; GO
然后在pm
架构下创建项目表(projects)和成员表(members):
CREATE TABLE pm.projects( id INT PRIMARY KEY IDENTITY, title VARCHAR(255) NOT NULL ); CREATE TABLE pm.members( id INT PRIMARY KEY IDENTITY, name VARCHAR(120) NOT NULL, project_id INT, FOREIGN KEY (project_id) REFERENCES pm.projects(id) );
假设每个成员只能参与一个项目,并且每个项目有零个或多个成员。如果项目处于初始阶段,则没有分配成员。
然后,在项目和成员表中插入一些行:
INSERT INTO pm.projects(title) VALUES ('New CRM for Project Sales'), ('ERP Implementation'), ('Develop Mobile Sales Platform'); INSERT INTO pm.members(name, project_id) VALUES ('John Doe', 1), ('Lily Bush', 1), ('Jane Doe', 2), ('Jack Daniel', null);
然后,查看一下两个表中的数据
SELECT * FROM pm.projects;
SELECT * FROM pm.members;
最后,使用FULL OUTER JOIN
查询项目和成员表中的数据:
SELECT m.name member, p.title project FROM pm.members m FULL OUTER JOIN pm.projects p ON p.id = m.project_id;
在本例中,查询返回参与项目的成员、不参与任何项目的成员以及没有任何成员的项目。
要查找不参与任何项目的成员和没有任何成员的项目,请在上述查询SQL语句中添加WHERE子句:
SELECT m.name member, p.title project FROM pm.members m FULL OUTER JOIN pm.projects p ON p.id = m.project_id WHERE m.id IS NULL OR P.id IS NULL;
通过输出可以清楚知道,Jack Daniel
没有参与任何项目,项目Develop Mobile Sales Platform
没有任何成员。
分类:
SQL Server
标签:
SQL Server
, 数据库
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek “源神”启动!「GitHub 热点速览」
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器