gpt4 book ai didi

用户表的 SQL 左连接

转载 作者:行者123 更新时间:2023-12-04 04:55:56 25 4
gpt4 key购买 nike

我有以下示例表(简化了我真正拥有的内容,因为那里还有一些连接)

|permission|username|
| perm1 | u1 |
| perm2 | u1 |
| perm3 | u1 |
| perm1 | u2 |
| perm4 | u2 |

我在这个表中有很多用户和很多组

我在用户权限方面遇到问题,有些用户可以在我的应用程序中执行某些操作,而其他用户则不能。目前,我不得不手动检查并找出差异所在。

我想从上表中创建一个查询,它给了我这样的答案
|permission| u1 | u2 |
|perm1 | 1 | 1 |
|perm2 | 1 | 0 |
|perm3 | 1 | 0 |
|perm4 | 0 | 1 |

我真的不想要用户下的 1 和 0,但我想要一些东西,我可以轻松地想象用户 1 具有这些权限而用户 2 没有。这对我确保用户具有相同的权限非常有用。

我已经完成了 SQL 来获取顶级表,所以我可以看到权限。

我在想某种左连接本身可能是答案,但我尝试的一切似乎都以无效的 SQL 告终。

请问有什么提示吗?如果我有一个起点,我很乐意尝试:)

提前致谢

最佳答案

您要查找的内容称为“旋转”。一种方法是使用 group by ,比如:

select  permission
, count(case when username = 'u1' then 1 end) as User1
, count(case when username = 'u2' then 1 end) as User2
, count(case when username = 'u3' then 1 end) as User3
, ...
from YourTable
group by
permission

看起来 Oracle 支持 the PIVOT keyword .你可以用它来完成同样的事情:
select  *
from YourTable
pivot (
count(*) as HasPermission
for (username) in ('u1', 'u2', 'u3', ...)
);

Example for both approaches at SQL Fiddle.

关于用户表的 SQL 左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16762951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com