【问题标题】:Two counts in sql but in separate columnssql中有两个计数但在单独的列中
【发布时间】:2016-03-16 19:50:32
【问题描述】:
我想在一个 sql 语句中执行两个计数。
SELECT COUNT(UserID) AS STAFF
FROM User_Role
WHERE(RoleID <> 1)
UNION
SELECT COUNT(UserID) AS STUDENTS
FROM User_Role AS User_Role_1
WHERE (RoleID = 1)
上面的代码有效,但输出如下:
Staff
7
6
但是我也希望它在单独的列中输出,例如:
Staff Students
7 6
【问题讨论】:
标签:
mysql
sql
count
where
【解决方案1】:
只需使用条件聚合。
SELECT sum(case when roleid<>1 then 1 else 0 end) AS STAFF,
sum(case when roleid=1 then 1 else 0 end) AS STUDENTS
FROM User_Role
【解决方案2】:
在 MySQL 中,您只需添加布尔表达式即可:
SELECT SUM(RoleID <> 1) as STAFF, SUM(RoleID = 1) as Students
FROM User_Role;
这恰好是我喜欢的 MySQL 扩展——许多语言在数字上下文中将布尔值视为整数。