我一直在尝试不同的方法来解决这个问题,但运气并不好。
基本上,此查询会返回员工所在的所有目录。我需要在此查询的选择中添加一个字段,列出目录中内置了多少具有“管理员”访问权限(u.access_level)的其他用户)。
Table: Directories (has many users)
Table: Users (users of the directory with different access levels)
SELECT d.id, d.name, u.employee_number, u.access_level, u.id 'user_id',
(** count of all users of this directory where their u.access_level = 'admin) AS admins
FROM directories d JOIN users u ON d.id = u.directory_id
WHERE u.employee_number = '045283'
ORDER BY d.NAME
因此,我需要返回员工所在的所有目录的记录集,包括对每个目录具有“管理员”访问权限的用户总数。基本上我需要对一些后来的框架逻辑进行计数,例如“如果员工是该目录的最后一个管理员 - 不允许他们删除自己或更改他们的访问级别 - 首先将另一个用户升级到管理员级别”。
感觉我需要一个子查询,但这有点超出了我现在的 SQL 技能。谢谢你的帮助!
最佳答案
sum(if(u.access_level = 'admin',1,0)) as admins
编辑。请注意,即使以这种方式也可以重写此条件
sum(u.access_level = 'admin')
因为 mysql 只在条件为真时返回 1,否则返回 0。
关于mysql - Select 中的条件计数/求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5342228/