我想分别知道ur表和rm表中和role表id一致的数据总量
时间: 2023-09-03 09:07:37 浏览: 31
您可以使用以下 SQL 查询语句来获取 `ur` 表和 `rm` 表中和 `role` 表 `id` 一致的数据总量:
- 对于 `ur` 表:
```
SELECT COUNT(*) FROM user_roles ur
INNER JOIN role r ON r.id = ur.role_id;
```
该查询语句使用 INNER JOIN 来连接 `user_roles` 和 `role` 表,并通过 `r.id = ur.role_id` 条件来匹配它们的 `id` 值。最后,使用 COUNT(*) 函数来计算匹配的记录总数。
- 对于 `rm` 表:
```
SELECT COUNT(*) FROM role_menus rm
INNER JOIN role r ON r.id = rm.role_id;
```
该查询语句使用 INNER JOIN 来连接 `role_menus` 和 `role` 表,并通过 `r.id = rm.role_id` 条件来匹配它们的 `id` 值。最后,使用 COUNT(*) 函数来计算匹配的记录总数。
相关问题
select * from role r inner join user_roles ur on r.id = ur.role_id inner join role_menus rm on r.id = rm.role_id ;如何得到rm和ur和role表的id一致的数据的总量
您可以使用以下 SQL 查询语句来获取 `rm` 和 `ur` 和 `role` 表的 `id` 一致的数据的总量:
```
SELECT COUNT(*) FROM role r
INNER JOIN user_roles ur ON r.id = ur.role_id
INNER JOIN role_menus rm ON r.id = rm.role_id;
```
该查询语句使用 INNER JOIN 来连接 `role`,`user_roles` 和 `role_menus` 表,并通过 `r.id = ur.role_id` 和 `r.id = rm.role_id` 条件来匹配它们的 `id` 值。最后,使用 COUNT(*) 函数来计算匹配的记录总数。
不能用一条SQL解决吗,假设role表id为3
可以使用以下 SQL 查询语句来获取 `ur` 表和 `rm` 表中和 `role` 表 `id` 为 3 的数据总量:
```
SELECT
(SELECT COUNT(*) FROM user_roles WHERE role_id = 3) AS ur_count,
(SELECT COUNT(*) FROM role_menus WHERE role_id = 3) AS rm_count
FROM role WHERE id = 3;
```
该查询语句使用子查询来分别查询 `user_roles` 和 `role_menus` 表中和 `role` 表 `id` 为 3 的数据总量,并使用 `AS` 关键字为它们指定别名。最后,使用 `WHERE` 条件来限定 `role` 表中 `id` 为 3 的记录,并使用 `SELECT` 语句将两个别名字段一起返回。
请注意,这种方法需要进行两次查询,因此可能会影响查询性能。