MySQL存储过程实现递归查询(mysql存储过程递归)

在数据库MySQL中,存储过程是支持任务运算和流程控制的一种复合语句集合,可以是一个完整的脚本,可以构建为编程语言中函数的库。存储过程可以实现批量修改和操作,实现简单的增删改查的脚本,还可以实现一些复杂的操作,比如基于递归的查询。

例如,假设有如下一个MySQL数据表,记录数据表中每个记录的父子关系:

| id | pid | name |

| — | —- | —– |

| 1 | 0 | tom |

| 2 | 1 | jack |

| 3 | 2 | sara |

| 4 | 3 | ken |

实现这个数据表中每个记录的递归查询,可以通过MySQL的存储过程实现。步骤如下:

首先,创建一个useage存储过程:

“`mysql

DROP PROCEDURE IF EXISTS useage;

–创建存储过程

CREATE PROCEDURE useage (

IN parent_id INT

)

BEGIN

— 定义递归查询的SQL

DECLARE sql_recursive VARCHAR(255);

SET sql_recursive=

CONCAT(‘SELECT id, pid, name FROM ‘,

‘(SELECT * FROM table WHERE pid=’,parent_id,’ UNION ALL’,

‘ SELECT id, pid, name FROM ‘,

‘(SELECT * FROM table WHERE pid=parent_id))’);

— 执行递归查询

PREPARE stmt1 FROM sql_recursive;

EXECUTE stmt1;

END;

“`

然后,执行存储过程,实现数据表中每个记录的递归查询。

“`mysql

CALL useage(1);


最后,查询结果如下:

| id | pid | name |
| --- | ---- | ----- |
| 1 | 0 | tom |
| 2 | 1 | jack |
| 3 | 2 | sara |
| 4 | 3 | ken |
由此可见,通过MySQL存储过程,可以实现基于递归的查询操作。通过调用存储过程,可以完成相应的脚本编写,实现灵活的查询操作。

数据运维技术 » MySQL存储过程实现递归查询(mysql存储过程递归)