当前位置: 首页 > news >正文

SQL FULL OUTER JOIN 关键字(完整外部连接)||SQL自连接 Self JOIN

SQL FULL OUTER JOIN 关键字


 当左(表1)或右(表2)表记录匹配时,FULL OUTER JOIN关键字将返回所有记录。 

 注意: FULL OUTER JOIN可能会返回非常大的结果集! 

SQL FULL OUTER JOIN 语法

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

SQL FULL OUTER JOIN

 

演示数据库


 在本教程中,我们将使用著名的Northwind示例数据库。

 以下是"Customers" 表中的数据:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

 选自 "Orders" 表的数据:

OrderIDCustomerIDEmployeeIDOrderDateShipperID
10308271996-09-183
10309331996-09-191
103107781996-09-202

SQL FULL OUTER JOIN 实例


 以下SQL语句选择所有客户和所有订单:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

 从这套结果中选择的数据如下:

CustomerNameOrderID
Alfreds Futterkiste
Ana Trujillo Emparedados y helados10308
Antonio Moreno Taquería10309
10310

注意: FULL OUTER JOIN关键字返回左表(Customers)中的所有行,以及右表(Orders)中的所有行。如果 "Customers"中的行中没有"Orders"中的匹配项,或者"Orders"中的行中没有 "Customers"中的匹配项,那么这些行也会列出。

SQL自连接


 自联接是一种常规联接,但表本身是连接的。 

Self JOIN语法

SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;

演示数据库


 在本教程中,我们将使用着名的Northwind示例数据库。

 以下是"Customers"表中的选择:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry

 
Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

SQL Self JOIN示例


 以下SQL语句匹配来自同一城市的客户:

代码示例

SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City 
ORDER BY A.City;

http://www.lryc.cn/news/219704.html

相关文章:

  • 专科医院污水处理设备构造解析及工艺流程
  • 【RabbitMQ】RabbitMQ 消息的可靠性 —— 生产者和消费者消息的确认,消息的持久化以及消费失败的重试机制
  • 百万套行泊一体量产定点,中国市场「开启」智驾高低速集成
  • Gopro hero5运动相机格式化后恢复案例
  • Microsoft Dynamics 365 CE 扩展定制 - 6. 增强代码
  • 基于libopenh264 codec的svc分层流实现方案
  • 为机器学习算法准备数据(Machine Learning 研习之八)
  • 基于Python OpenCV的金铲铲自动进游戏、D牌...
  • c++中httplib使用
  • Vite 的基本原理,和 webpack 在开发阶段的比较
  • [开源]免费开源MES系统/可视化数字大屏/自动排班系统
  • python如何使用gspread读取google在线excel数据?
  • 线程同步——互斥量解锁、解锁
  • 数据结构(c语言版) 顺序表
  • Springboot 集成 RocketMq(入门)
  • Elasticsearch:ES|QL 中的数据丰富
  • 【linux编程】linux文件IO高级I/O函数介绍和代码示例
  • jQuery获取地址栏GET参数值
  • JAVA应用中线程池设置多少合适?
  • .Net Core 3.1 解决数据大小限制
  • 【音视频 | opus】opus编码的Ogg封装文件详解
  • 【微信小程序】自定义组件(一)
  • 如何通过一条数字人三维动画宣传片,打造出数字文旅
  • 【MongoDB】索引 - 数组字段的多键索引
  • 2023.11.5 关于 Spring 创建 和 使用
  • 3D目标检测实战 | 图解KITTI数据集评价指标AP R40(附Python实现)
  • 制作一个ros2机器人需要学习的课本(还不全面)
  • Qt OpenGL相机系统
  • 英语语音识别,语言评测,语音打分实践与代码实现
  • 【SpringBoot篇】SpringBoot整合Mybatis实战