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

SQL的多表联查

这里我先附上两张表的数据:

Orders 表:

OrderIDCustomerID
13
21
32
4NULL

Customers 表:

CustomerIDCustomerName
1Alice
2Bob
3Charlie
4David

INNER JOIN 🤝

概念: INNER JOIN(内连接)返回两个表中匹配的记录。如果某条记录在其中一个表中没有匹配项,那么它就不会出现在结果集中。

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

结果:

OrderIDCustomerName
1Charlie
2Alice
3Bob

解释: 只显示了在两个表中都存在的匹配记录。订单4因为CustomerID为NULL,在Customers表中没有匹配,所以不显示。

LEFT JOIN 👈

概念: LEFT JOIN(左连接)返回左表(LEFT JOIN关键字左边的表)的所有记录,即使在右表中没有匹配。如果右表中没有匹配,则结果为NULL。

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

结果:

OrderIDCustomerName
1Charlie
2Alice
3Bob
4NULL

 解释: 显示了Orders表中的所有记录,对于CustomerID为NULL的订单4,CustomerName为NULL,因为没有匹配的顾客信息。

RIGHT JOIN 示例 👉

概念: RIGHT JOIN(右连接)与LEFT JOIN相反,它返回右表(RIGHT JOIN关键字右边的表)的所有记录,即使左表中没有匹配。如果左表中没有匹配,则结果为NULL。

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

结果:

OrderIDCustomerName
1Charlie
2Alice
3Bob
NULLDavid

 解释: 显示了Customers表中的所有记录,对于顾客David,因为没有对应的订单(OrderID为NULL),依然会被列出

FULL JOIN 示例 ↔️ (以支持的数据库为例)

由于不是所有数据库都直接支持FULL JOIN,这里提供一个概念上的说明和一个可能的解决方案(比如在MySQL中使用UNION)。

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

概念上的结果:

OrderIDCustomerName
1Charlie
2Alice
3Bob
4NULL
NULLDavid

解释: 显示了OrdersCustomers表中的所有记录,两边没有匹配的部分用NULL填充。

总结:

  • INNER JOIN:匹配两边的记录,无匹配则不显示。
  • LEFT JOIN:以左表为主,左表所有记录均显示,右表无匹配则NULL。
  • RIGHT JOIN:以右表为主,右表所有记录均显示,左表无匹配则NULL。
  • FULL JOIN:展示两边所有记录,任一边无匹配则对应侧为NULL。
http://www.lryc.cn/news/351896.html

相关文章:

  • 瑞芯微RV1126——人脸识别源码分析
  • springboot 两个相同类型的Bean使用@Resouce加载
  • 代码随想录算法跟练 | Day3 | 链表Part1
  • 虚拟化技术[1]之服务器虚拟化
  • WPF之容器标签之Canvas布局标签
  • AIGC绘画设计基础-建筑设计应用
  • Pinia:状态管理库
  • Mokito的一些API
  • 前端已死? Bootstrap--CSS组件
  • codewars check_same_case 题解
  • 【Text2SQL 经典模型】X-SQL
  • 蓉耀·时尚双子星------Yestar艺星首家星美学概念院璀璨启航
  • Undet for SketchUp 2023.3 点云建模软件 支持支持草图大师sketchup2021-2022-2023
  • CHI dataless 传输——CHI(4)
  • vue3第三十节(vue3 vite中使用sass)
  • blender 烘焙渲染图片,已经导出fbx,导出贴图。插件生成图片
  • ASO行业面临洗牌,苹果应用商店加搜索广告!
  • Labelme自定义数据集COCO格式【实例分割】
  • 【网络安全】Linux 应急响应-溯源-系统日志排查知识点
  • Spark项目实训(一)
  • 爬虫基础1
  • vlan综合实验
  • 如何使用ffmpeg 实现10种特效
  • C语言如果变量全部在全局内存空间会怎么样
  • 【YOLO改进】换遍MMPretrain主干网络之ConvNeXt-Tiny(基于MMYOLO)
  • 【数据库】MySQL
  • JVM运行时内存:垃圾回收器(Serial ParNew Parallel )详解
  • The Missing Semester of Your CS Education(计算机教育中缺失的一课)
  • 如何为ChatGPT编写有效的提示词:软件开发者的指南
  • angular插值语法与属性绑定