【重学 MySQL】二十五、等值连接vs非等值连接、自连接vs非自连接 
   
 
 - 等值连接(Equijoin) vs 非等值连接(Non-equijoin)
 - 等值连接(Equijoin)
 - 非等值连接(Non-equijoin)
 
- 自连接(Self-join) vs 非自连接(Non-self-join)
 - 自连接(Self-join)
 - 非自连接(Non-self-join)
 
- 总结
 

在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表的MinProductID和MaxProductID之间。
自连接(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进行了连接。
总结
等值连接与非等值连接的区别在于连接条件中使用的操作符类型,而自连接与非自连接的区别则在于连接是否在同一表内进行。理解这些不同类型的连接对于处理复杂的数据库查询至关重要。




![[数据集][目标检测]高铁受电弓检测数据集VOC+YOLO格式1245张2类别](https://i-blog.csdnimg.cn/direct/74e96348070e4f96a0225a7a95ca0842.png)














