mysql - Select 中的条件计数/求和

标签 mysql

我一直在尝试不同的方法来解决这个问题,但运气并不好。

基本上,此查询会返回员工所在的所有目录。我需要在此查询的选择中添加一个字段,列出目录中内置了多少具有“管理员”访问权限(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/

相关文章:

mysql - 错误 1062 (23000) : Duplicate entry '?' for key 'PRIMARY' with two differents entries

c# - ASP.NET EntityFramework 获取数据库名称

mysql_connect "bool $new_link = true"很慢

java - 使用Mysql从数据库中检索时间戳数据

php - 如何在共享主机 MySQL 中记录慢速查询?

php - jquery AJAX实时获取新的mysql记录

mysql - 在 MySQL 中,blob 数据的长度与其数据包大小(以字节为单位)有何关联?

Mysql建表(select)跨服务器查询

mysql - mysql 上的 INNER 和 LEFT JOIN

mysql - InnoDB 行大小在表增长时呈指数变化?