首頁 >資料庫 >mysql教程 >如何使用遞歸預存程序計算 MySQL 中樹結構的總量?

如何使用遞歸預存程序計算 MySQL 中樹結構的總量?

Barbara Streisand
Barbara Streisand原創
2024-11-03 08:02:30743瀏覽

How to Calculate Total Quantity Up a Tree Structure in MySQL using a Recursive Stored Procedure?

使用MySQL 中的遞歸預存程序來決定總量

為了滿足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 ;

此預存程序初始化父ID 和臨時總計的變數。然後它從“測試”表中檢索必要的資訊。如果父 ID 為空,則該程序將總數設定為目前數量。否則,它會使用父 ID 遞歸呼叫自身並相應地累加總數。

要呼叫該過程,您需要設定某些會話變數:

SET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255; 

CALL calctotal(6, @total);
SELECT @total;

將「6」替換為您想要的ID 將為您提供從根節點往上計算的總數量。

以上是如何使用遞歸預存程序計算 MySQL 中樹結構的總量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn