oracle使用sql查询role_menu表中有共同菜单的是哪些角色,共同菜单有哪些,结果集为role_ids,menu_id两列,role_ids拥有这个菜单的角色,menu_id为共有的菜单
时间: 2024-02-25 18:52:28 浏览: 55
oracle 菜单查询
可以使用以下 SQL 查询语句来查询具有共同菜单的角色及共同菜单:
```
SELECT rm1.role_ids, rm1.menu_id
FROM role_menu rm1
INNER JOIN role_menu rm2 ON rm1.menu_id = rm2.menu_id AND rm1.role_ids <> rm2.role_ids
GROUP BY rm1.role_ids, rm1.menu_id
HAVING COUNT(*) > 1
```
解释一下查询语句:
- 第一行:选择要返回的列,即角色 ID 和菜单 ID。
- 第二行:从 role_menu 表中选择数据。
- 第三行:使用 INNER JOIN 连接 role_menu 表自身,根据 menu_id 相等且 role_ids 不相等的条件进行连接,这样可以获取具有相同菜单的角色。
- 第四行:使用 GROUP BY 分组,根据角色和菜单 ID 进行分组。
- 第五行:使用 HAVING 限制结果集,只返回具有相同菜单的角色。
- 最后一行:结束语句。
这个查询语句将返回具有共同菜单的角色及共同菜单。
阅读全文