gpt4 book ai didi

php - 如何在左连接查询中执行 SUM 子查询?

转载 作者:行者123 更新时间:2023-11-28 23:53:00 24 4
gpt4 key购买 nike

所以我有这个数据:

表“group_info”:

identifier      name
123 group a
124 group b

表:'group_participants':

id              group_id       privilege
1 123 admin
2 123 user
3 124 admin

我想获取用户 ID 1 所属的所有组的“用户”或“管理员”人数以及“管理员”人数,以及组标识符和名称的。

例如在上述情况下,这将返回 123、“组 a”、2 个用户和 1 个管理员。

我试图在单个查询中执行此操作,但无法完全理解最后一部分。到目前为止我有这个:

SELECT group_info.identifier, group_info.name
FROM `group_info`
LEFT JOIN group_participants ON group_participants.group_id = group_info.identifier
WHERE group_participants.user_id = 1

我知道这可以在 2 个查询中轻松完成,但我宁愿一次完成。任何想法如何格式化子查询来实现这一点?

最佳答案

您的问题不清楚“用户或以上”是什么意思。但是你的问题的答案是使用条件聚合和 HAVING 子句:

SELECT gi.identifier, gi.name,
sum(gp.priviledge in ('user', 'admin')) as numUserOrAdmin,
sum(gp.priviledge = 'admin') as numAdmins
FROM group_info gi LEFT JOIN
group_participants gp
ON gp.group_id = gi.identifier
GROUP BY gi.identifier, gi.name
HAVING SUM(gp.user_id = 1) > 0

关于php - 如何在左连接查询中执行 SUM 子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32301143/

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