MySQL是一種廣泛應用的關系數據庫管理系統(RDBMS),很多Web應用都需要處理樹形數據,例如菜單,分類等等。在MySQL中使用函數查詢樹形數據是一種非常有效的方法。
MySQL函數可以通過遞歸查詢樹形數據,以下是一些常用的MySQL函數。
DELIMITER $$ CREATE FUNCTION `getTree`(parentId INT, level INT) RETURNS varchar(10000) BEGIN DECLARE result VARCHAR(10000); DECLARE item VARCHAR(100); DECLARE itemLevel INT; SET result = ''; SET @sql = CONCAT(" SELECT CONCAT(REPEAT('─', level - 1), name) AS name, id, level FROM menu WHERE parentId = ", parentId, " ORDER BY sort ASC "); PREPARE stmt1 FROM @sql; EXECUTE stmt1; SET cur = CURSOR FOR stmt1; OPEN cur; readLoop: LOOP FETCH cur INTO item, itemId, itemLevel; IF done THEN LEAVE readLoop; END IF; SET result = CONCAT(result, item, "\n"); SET result = CONCAT(result, getTree(itemId, itemLevel + 1)); END LOOP; CLOSE cur; RETURN result; END$$ DELIMITER ;
以上的函數可以遞歸查詢樹形結構,并以較好的形式輸出,例如:
menu1 1 ─menu1-1 2 │ ├─menu1-1-1 3 │ │ └─menu1-1-1-1 4 │ └─menu1-1-2 5 └─menu1-2 6 menu2 7 └─menu2-1 8
以上是關于MySQL使用函數查詢樹形數據的一些介紹,希望對大家有用。
上一篇mysql變量分哪三種
下一篇mysql取結果集的行數