MySQL層級數據查詢

MySQL層級數據查詢

address表結構如下:

圖1

address表有如下數據:

在這裏插入圖片描述

現在創建一個函數,獲取地址全稱:

CREATE DEFINER=`root`@`localhost` FUNCTION `getFullName`(`id` varchar(1000)) RETURNS varchar(1000) CHARSET utf8mb4
    READS SQL DATA
BEGIN

	DECLARE fullName VARCHAR(1000);
	DECLARE parentId VARCHAR(1000);
	DECLARE parentName VARCHAR(1000);
	
	set fullName = (SELECT address.`name` FROM address WHERE address.id = id);
	set parentId = (SELECT address.parentId FROM address WHERE address.id = id);
	
	WHILE parentId IS NOT NULL DO
	    set parentName = (SELECT address.`name` FROM address WHERE address.id = parentId);
			set fullName = CONCAT(parentName,"/",fullName);
	    set parentId = (SELECT address.parentId FROM address WHERE address.id = parentId);
    END WHILE;
	
	RETURN fullName;
END

函數測試:

SELECT
	`address`.`id` AS `id`,
	`address`.`name` AS `name`,
	`getFullName` ( `address`.`id` ) AS `fullName` 
FROM
	`address`

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章