使用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中文網其他相關文章!