MySQL 内连接同一张表

MySQL 内连接同一张表

MySQL INNER JOIN 用于在基于相关列的两个或多个表之间获取行。但是,您知道可以使用 INNER JOIN 连接同一名称的表吗?这称为 self-join 或递归连接。

阅读更多:MySQL 教程

语法

同一张表的 INNER JOIN 的语法如下:

SELECT table1.column1, table2.column2...
FROM table table1
INNER JOIN table table2 
ON table1.column_name=table2.column_name;

示例

考虑一个名为 employee 的表,包含以下列:

  • id: int(11)(主键)
  • name: varchar(50)
  • age: int(11)
  • manager_id: int(11)(外键指向 employee.id)

假设我们想要检索员工及其对应经理的姓名。使用 MySQL INNER JOIN self-join 实现此目的的查询如下:

SELECT e.name, m.name AS manager_name
FROM employee e
INNER JOIN employee m
ON e.manager_id = m.id;

在上面的查询中,我们为同一张表创建了两个别名 – employee e 和 employee m。然后,我们根据 employee.manager_id 和 manager.id 列将两个表连接起来。最后,我们使用别名选择了员工姓名和经理姓名。

应用场景

Self-join 可用于希望将表与其自身副本联接以检索某些数据的情况。以下是一些使用案例:

  • 层次结构:Self-join 可用于通过将包含层次结构元素的表与其自身联接来表示分层数据。
  • 记录之间的关系:一个表可以包含与同一表中的其他记录相关联的记录。Self-join 可用于检索这些关系。

总结

MySQL INNER JOIN same table(self-join)可用于在同一张表的记录之间基于关系检索数据的场景。通过正确的语法和理解,self-join 可以使复杂查询更易管理。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程