【问题标题】: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 扩展——许多语言在数字上下文中将布尔值视为整数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多