-- mysql 查询一级菜单
SELECT DISTINCT
d.id AS "id",
d.pid AS "pid",
d.name AS "name",
d.icon AS "icon",
d.description AS "description",
d.url AS "url",
d.ordernum AS "orderNum",
is_leaf_res (d.id, 0) AS "leaf"
FROM
sys_user a,
sys_user_role b,
sys_role_res c,
sys_res d
WHERE a.id = b.userid
AND b.roleid = c.roleid
AND c.resid = d.id
AND d.pid = -1
AND d.type = 0
AND a.username = 'admin'
ORDER BY d.ordernum
Mysql 自定义函数:
DELIMITER $$
USE `yxb_sxpt`$$
DROP FUNCTION IF EXISTS `is_leaf_res`$$
CREATE DEFINER=`root`@`%` FUNCTION `is_leaf_res`(V_ID INT,V_TYPE INT) RETURNS INT(11)
BEGIN
DECLARE R_LEAF INT;
IF V_TYPE IS NULL THEN
SELECT COUNT(1) INTO R_LEAF FROM SYS_RES T WHERE T.PID = V_ID;
RETURN (R_LEAF);
ELSE
SELECT COUNT(1) INTO R_LEAF FROM SYS_RES T WHERE T.PID = V_ID AND T.TYPE = V_TYPE;
RETURN(R_LEAF);
END IF;
END$$
DELIMITER ;