在 MySQL 中创建递归存储过程来确定给定项目的计算数量需要了解表结构和递归逻辑。
问题背景
给定一个包含“id”、“parent_id”和“数量”列的表,目标是通过以下方式计算商品的总数量递归遍历其父子关系。例如,第 6 项的计算数量为 240,因为其父项为 5(数量 4)、3(数量 2)和 2(数量 10)。
解决方案:递归存储过程
<code class="mysql">DELIMITER $$ CREATE PROCEDURE calctotal( IN number INT, OUT total INT ) BEGIN DECLARE parent_ID INT DEFAULT NULL ; DECLARE tmptotal INT DEFAULT 0; DECLARE tmptotal2 INT DEFAULT 0; SELECT parentid FROM test WHERE id = number INTO parent_ID; SELECT quantity FROM test WHERE id = number INTO tmptotal; IF parent_ID IS NULL THEN SET total = tmptotal; ELSE CALL calctotal(parent_ID, tmptotal2); SET total = tmptotal2 * tmptotal; END IF; END$$ DELIMITER ;</code>
过程调用
调用存储过程并获取第 6 项的计算数量:
<code class="mysql">SET @@GLOBAL.max_sp_recursion_depth = 255; SET @@session.max_sp_recursion_depth = 255; CALL calctotal(6, @total); SELECT @total;</code>
过程分解
以上是如何在 MySQL 中使用递归存储过程来计算计算量?的详细内容。更多信息请关注PHP中文网其他相关文章!