PHP-MySQL在一个查询中应用多个条件

这个问题已经在这里有了答案:            >            need to return two sets of data with two different where clauses                                    2个
我有一个名为users的表,其中包含以下各列:

id
login
status

现在,我想用PHP创建一个统计页面,我想查看有多少用户的状态为= 0,有多少用户的状态为= 1,有多少用户的状态为2.

我想以最有效的方式做到这一点,而不必运行3个查询.

现在,我只知道在UNION中使用3个查询来执行此操作:

(SELECT COUNT(*) FROM users WHERE status='0') UNION (SELECT COUNT(*) FROM users WHERE status='1') UNION (SELECT COUNT(*) FROM users WHERE status='2')

我不太了解sql编程,但是我想这样的事情可能会起作用:

SELECT IF(status='0',stat0++),IF(status='1',stat1++),IF(status='2',stat2++) FROM users GROUP BY status

但这不起作用,因为语法错误

解决方法:

查询返回1行中的状态数

select
  sum(case when status = '0' then 1 else 0 end) as c1,
  sum(case when status = '1' then 1 else 0 end) as c2,
  sum(case when status = '2' then 1 else 0 end) as c3
from users 
where status = '0' or status = '1' or status = '2'

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...