mysql 查询几个角色的子级角色,包含子级的子级
时间: 2023-02-09 19:46:23 浏览: 86
可以使用递归查询来实现查询角色的子级角色,包括子级的子级。
具体查询语句如下:
WITH RECURSIVE subquery AS (
SELECT id, parent_id FROM roles WHERE parent_id IN (...)
UNION
SELECT a.id, a.parent_id FROM roles a, subquery b WHERE a.parent_id = b.id
)
SELECT * FROM subquery;
其中 "..." 是要查询子级角色的角色的 id 列表。
这段语句使用了 MySQL 的递归查询语法。首先,它选择了 parent_id 在给定列表中的角色。然后,它递归地查询 parent_id 与上一次查询结果中 id 相等的角色。最后,它将所有查询结果返回。
相关问题
mysql 通过角色名称查询几个角色的子级角色,包含子级的子级
在 MySQL 中可以使用递归查询来实现查询角色名称的子级角色,包含子级的子级。
具体查询语句可以如下:
```
WITH RECURSIVE sub_roles AS (
SELECT id, name, parent_id FROM roles
WHERE name = '角色名称'
UNION
SELECT r.id, r.name, r.parent_id FROM roles r
JOIN sub_roles sr ON sr.id = r.parent_id
)
SELECT * FROM sub_roles;
```
此语句使用了 MySQL 的递归查询语句 “WITH RECURSIVE”,可以通过角色名称查询出所有子级角色,包含子级的子级。
请注意,这个语句假设有一张叫做"roles" 的表,包含有"id","name","parent_id"这三个字段。
mysql 通过角色名称in查询几个角色的子级角色,包含子级的子级
可以使用递归查询实现。示例代码如下:
```
WITH RECURSIVE roles_tree AS (
SELECT id, name, parent_id FROM roles WHERE name in ('角色1', '角色2', '角色3')
UNION
SELECT r.id, r.name, r.parent_id FROM roles r
JOIN roles_tree ON roles_tree.id = r.parent_id
)
SELECT * FROM roles_tree;
```
其中 `roles` 为角色表, `id`, `name`, `parent_id` 分别对应角色的 ID, 名称和父角色 ID。
阅读全文