9.0.103 取每一个角色所含的下层角色
我想写一个数据库查询语句,能够列出每一个角色所含的下层角色(含下层的下层。。。。直到最底层),自已写出来都不对。有谁写过能分享下吗
------------------------------------------------------------------------------------------------
WITH RecursiveRoles AS (
-- 基础情况:选择所有顶级角色(没有父角色的角色)
SELECT RoleId, RoleName, RoleId AS OriginalRoleId, 0 AS Level
FROM webpages_Roles
WHERE RoleId NOT IN (SELECT InheritedRoleId FROM role_inherited)
UNION ALL
-- 递归部分:选择所有子角色
SELECT ri.InheritedRoleId, wr.RoleName, rr.OriginalRoleId, rr.Level + 1
FROM role_inherited ri
INNER JOIN webpages_Roles wr ON ri.InheritedRoleId = wr.RoleId
INNER JOIN RecursiveRoles rr ON ri.RoleId = rr.RoleId
)
SELECT L.Level, L.OriginalRoleId, R.RoleName, L.RoleId, L.RoleName
FROM RecursiveRoles L left outer joinwebpages_Roles R ON L.OriginalRoleId = R.RoleId
--WHERE L.OriginalRoleId <> L.RoleId
ORDER BY L.Level, R.RoleName,L.RoleName;
大佬,sql我们不是很擅长哈,不过看您的这个需求,可以考虑使用服务端命令递归去查询,可以参考下方的帖子
一看就会,超有用活字格技能:一百零五、活字格的更多可能性,用服务端命令实现递归
https://gcdn.grapecity.com.cn/showtopic-83594-1-1.html
(出处: 葡萄城开发者社区)
或者您也可以在网上查找相关的sql语句去做
页:
[1]