这个问题已经在这里有了答案: > 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'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。