首页 > 数据库 >【重学 MySQL】二十五、等值连接vs非等值连接、自连接vs非自连接

【重学 MySQL】二十五、等值连接vs非等值连接、自连接vs非自连接

时间:2024-09-11 22:50:10浏览次数:11  
标签:Non join 等值 Customers 连接 vs Orders

【重学 MySQL】二十五、等值连接vs非等值连接、自连接vs非自连接

在这里插入图片描述

在MySQL中,连接(JOIN)是处理多个表之间关系的一种非常强大的工具。根据连接的类型和条件,连接可以分为多种不同的形式,其中最常见的区分包括等值连接与非等值连接、自连接与非自连接。

等值连接(Equijoin) vs 非等值连接(Non-equijoin)

等值连接(Equijoin)

等值连接是最常见的连接类型,它基于两个表之间的相等条件来连接记录。这通常意味着连接条件中的两个字段通过等于(=)操作符进行比较。

示例SQL

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

在这个例子中,Orders表和Customers表通过CustomerID字段进行了等值连接。

非等值连接(Non-equijoin)

非等值连接则不使用等于(=)操作符来比较字段,而是可能使用其他比较操作符(如><>=<=<>等)或者不使用任何直接的字段比较,而是通过表达式或函数来连接两个表。

示例SQL(使用BETWEEN操作符):

SELECT Orders.OrderID, Products.ProductName
FROM Orders
INNER JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
INNER JOIN Products ON OrderDetails.ProductID BETWEEN Products.MinProductID AND Products.MaxProductID;

在这个例子中,OrderDetails表和Products表之间的连接是基于一个非等值条件,即OrderDetails.ProductID位于Products表的MinProductIDMaxProductID之间。

自连接(Self-join) vs 非自连接(Non-self-join)

自连接(Self-join)

自连接是指表与其自身进行的连接。这种连接通常用于处理表中具有层级或树状结构的数据,例如,员工表可能包含员工ID和上级员工ID,这时可以通过自连接来查询每个员工的上级。

示例SQL

SELECT e1.EmployeeID AS Employee, e1.Name AS EmployeeName, e2.Name AS ManagerName
FROM Employees e1
INNER JOIN Employees e2 ON e1.ManagerID = e2.EmployeeID;

在这个例子中,Employees表与其自身进行了连接,以找出每个员工的上级。

非自连接(Non-self-join)

非自连接是指表与其他不同的表进行的连接。这是最常见的连接形式,用于处理两个或多个不相关的表之间的数据关系。

示例SQL(如上文的等值连接示例):

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

在这个例子中,Orders表和Customers表是两个不同的表,它们之间通过CustomerID进行了连接。

总结

等值连接与非等值连接的区别在于连接条件中使用的操作符类型,而自连接与非自连接的区别则在于连接是否在同一表内进行。理解这些不同类型的连接对于处理复杂的数据库查询至关重要。

标签:Non,join,等值,Customers,连接,vs,Orders
From: https://blog.csdn.net/weixin_43344151/article/details/142152215

相关文章

  • verilog vscode 与AI 插件
    Verilog轻量化开发环境背景笔者常用的开发环境VIAVDO,体积巨大,自带编辑器除了linting能用,编辑器几乎不能用,仿真界面很友好,但是速度比较慢。SublimeText,非常好用的编辑器,各种插件使用verilog非常方便,可以自动补全、生成调用、linting等;VSCODE,SublimeText有的插件,VSC......
  • VS Code下载教程
    VSCode下载教程2024年09月VSCode最新下载/使用教程下载教程:官网下载访问VisualStudioCode(VSCode)的官方网站:https://code.visualstudio.com/点击页面上的“DownloadforWindows”安装下载完成后,双击VSCode的安装包文件(例如VSCodeUserSetup-x64-xxx.ex......
  • spring如何整合druid连接池?
    spring整合druid连接池 1.新建maven项目打开IDE(比如IntelliJIDEA,Eclipse等)。选择新建项目:在IntelliJIDEA中,选择File>New>Project。在Eclipse中,选择File>New>MavenProject。选择Maven项目模板:在IntelliJIDEA中,选择Archetype选项卡,并搜索或选择一个适......
  • qumu虚拟机启动后无法远程连接
    通过virsh在启动qemu虚拟机,可以通过VNC访问虚拟机,但无法通过设置的SSH的外部映射端口登录。首先在宿主机上查看虚拟机(csv\tpm\name)的网络配置,可以看到端口映射情况和当前网络的网段(10.0.10.0/24)。$virsheditcsv_tpm_name在配置中包含访问虚拟机的VNC端口(5995),通过该......
  • DBeaver 连接 mysql 报错:Public Key Retrieval is not allowed
    前言DBeaver连接mysql报错:PublicKeyRetrievalisnotallowed遇到"PublicKeyRetrievalisnotallowed"错误时,通常意味着你正在使用的身份验证方法需要加密连接,但是没有正确地配置客户端或服务器来支持这种加密。解决第一种可以在连接字符串中添加allowPublicKeyRe......
  • mysql 连接失败:message from server: "Host '192.168.xx.xxx' is not allowed to conn
    前言mysql连接失败:messagefromserver:"Host'192.168.xx.xxx'isnotallowedtoconnecttothisMySQLserver"解决错误信息表明你尝试从IP地址192.168.xx.xxx连接到MySQL服务器,但是该IP地址没有被授权连接权限。为了解决这个问题,你需要确保你的MySQL用户权限......
  • Windows电脑使用VNC远程连接本地局域网无公网IP树莓派5
    文章目录前言1.使用RaspberryPiImager安装RaspberryPiOS2.Windows安装VNC远程树莓派3.使用VNCViewer公网远程访问树莓派3.1安装Cpolar步骤3.2配置固定的公网地址3.3VNC远程连接测试4.固定远程连接公网地址4.1固定TCP地址测试前言树莓派因其小巧的......
  • 文心一言 VS 讯飞星火 VS chatgpt (344)-- 算法导论23.2 3题
    三、对于稀疏图G=(V,E)......
  • 文心一言 VS 讯飞星火 VS chatgpt (343)-- 算法导论23.2 2题
    二、假定我们用邻接矩阵来表示图G=(V,E)......
  • 6. 使用 lan口连接上层路由器的lan ,实现openwrt联网
    参考网友帖子:OpenWrt中,旁路由的设置与使用-知乎(zhihu.com)openwrt旁路由设置的正确方式-CSDN博客三分钟搞定OpenWrt网关(旁路由)模式设置小白必备教程适用于N1及所有旁路由设备-斐讯无线路由器以及其它斐迅网络设备-恩山无线论坛(right.com.cn) 配置如下:......