有三张表a/b/c,使用sql合并三张表并分别取出表a/b/c的user_id的去重个数
时间: 2023-12-28 17:04:03 浏览: 23
您好!这个问题可以通过以下SQL语句来合并三张表并分别取出表a/b/c的user_id的去重个数:
```sql
SELECT COUNT(DISTINCT a.user_id) AS a_user_count,
COUNT(DISTINCT b.user_id) AS b_user_count,
COUNT(DISTINCT c.user_id) AS c_user_count
FROM a
JOIN b ON a.user_id = b.user_id
JOIN c ON a.user_id = c.user_id
```
这个SQL语句可以将a、b、c三张表按照user_id进行关联,然后分别计算出各个表的user_id的去重个数,最终返回一个包含这些个数的结果集。
希望这个回答能够帮到您!如果您有其他问题,欢迎随时问我哦~
相关问题
pgsql中给A库的某张表赋B库的查询权限
您可以使用如下的 GRANT 语句来实现将B库的查询权限授予A库的某张表:
```sql
GRANT SELECT ON TABLE b_schema.b_table TO a_user;
```
其中,b_schema 表示B库中该表所在的模式,b_table 表示B库中要授权的表名,a_user 表示A库中被授权的用户。
需要注意的是,为了执行此命令,您需要在具有足够权限的用户下执行它。另外,如果您想要授予更多的权限,可以将 SELECT 替换为其他权限关键字,如 INSERT、UPDATE 或 DELETE。
现在有五张表 sys_menu,sye_role,_sys_role_menu,sys_user,sys_user_role查询每一个用户拥有多少个菜单
可以使用以下 SQL 语句查询每一个用户拥有多少个菜单:
```
SELECT su.username, COUNT(sm.menu_id) AS menu_count
FROM sys_user su
LEFT JOIN sys_user_role sur ON su.user_id = sur.user_id
LEFT JOIN sys_role sr ON sur.role_id = sr.role_id
LEFT JOIN sys_role_menu srm ON sr.role_id = srm.role_id
LEFT JOIN sys_menu sm ON srm.menu_id = sm.menu_id
GROUP BY su.username;
```
该语句使用了左连接(LEFT JOIN)和分组(GROUP BY)操作。首先将 `sys_user` 表与 `sys_user_role` 表进行左连接,然后将 `sys_role` 表与 `sys_role_menu` 表进行左连接,最后将 `sys_menu` 表与 `sys_role_menu` 表进行左连接。这样可以获取每一个用户拥有的所有菜单的信息。
然后使用 GROUP BY 操作将结果按照用户名进行分组,并使用 COUNT 聚合函数计算每一个用户拥有的菜单数量。最终返回每一个用户的用户名和菜单数量。