gpt4 book ai didi

mysql - 查询相当于没有子查询的两个分组依据?

转载 作者:行者123 更新时间:2023-11-30 21:47:50 27 4
gpt4 key购买 nike

我正在尝试运行有关用户 ACL 的报告。我们使用 MYSQL,但出于性能原因,我们被禁止使用子查询。目标是将其变为:

    --------------------------------
| userName | folderID | roleID |
--------------------------------
| gronk | 1 | 1 |
| gronk | 2 | 2 |
| gronk | 4 | 2 |
| tbrady | 1 | 2 |
| jedelman | 1 | 1 |
| jedelman | 2 | 1 |
| mbutler | 1 | 2 |
| mbutler | 2 | 2 |
| bill | 1 | 3 |
| bill | 2 | 3 |
| bill | 3 | 3 |
| bill | 4 | 3 |
--------------------------------

进入这个:

    ------------------------
| Lowest Role | Number |
------------------------
| 1 | 2 |
| 2 | 2 |
| 3 | 1 |
------------------------

我可以看到如何使用子查询来完成它。内部查询将根据 userName 和 min(roleID) 进行分组。然后外部查询将根据最低角色和计数(*)进行分组。但是如果没有子查询,我看不出该怎么做。

此外,如果有帮助,我创建了一个 SQL Fiddle具有上述数据。

最佳答案

我找到了一个使用左连接的解决方案:

select UFM.roleID, count(distinct UFM.userName) 
from UserFolderMembership UFM
left join UserFolderMembership UFM2 on
UFM.userName = UFM2.userName and
UFM.roleID > UFM2.roleID
where
UFM2.userName is null
group by
UFM.roleID

关于mysql - 查询相当于没有子查询的两个分组依据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48603036/

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