admin 管理员组

文章数量: 1184232


2024年4月14日发(作者:txt编辑app)

mysql sql语句用递归

MySQL中并没有内置的递归函数或语句,但可以通过使用存储过程

和临时表来实现递归查询。下面是十个例子,展示了如何使用递归

查询来解决不同的问题。

1. 查询树状结构

假设有一个表格存储了员工的信息,包括员工ID和上级ID。我们

可以使用递归查询来获取某个员工的所有下级员工,以及他们的下

级员工,以此类推。

```sql

CREATE PROCEDURE getSubordinates(IN employeeID INT)

BEGIN

CREATE TEMPORARY TABLE subordinates (employeeID INT,

name VARCHAR(255));

INSERT INTO subordinates SELECT employeeID, name

FROM employees WHERE employeeID = employeeID;

REPEAT

INSERT INTO subordinates SELECT

eeID, FROM employees

INNER JOIN subordinates ON isorID =

eeID;

UNTIL ROW_COUNT() = 0 END REPEAT;

SELECT * FROM subordinates;

END

```

2. 查询路径

假设有一个表格存储了员工的信息,包括员工ID和上级ID。我们

可以使用递归查询来获取某个员工的上级路径,即从他直到最高级

别上级的所有员工。

```sql

CREATE PROCEDURE getSupervisorPath(IN employeeID INT)

BEGIN

CREATE TEMPORARY TABLE supervisorPath (employeeID

INT, name VARCHAR(255));

INSERT INTO supervisorPath SELECT employeeID, name

FROM employees WHERE employeeID = employeeID;

REPEAT

INSERT INTO supervisorPath SELECT

eeID, FROM employees

INNER JOIN supervisorPath ON eeID =

isorID;

UNTIL ROW_COUNT() = 0 END REPEAT;

SELECT * FROM supervisorPath;


本文标签: 查询 员工 递归 使用 获取