我有一张 table
id, location, status
1, london, 1
2, london, 0
3, boston, 1
4, boston, 1
我希望我的查询生成如下内容:-
location, status_1, status_0
london, 1, 1
boston, 2, 0
到目前为止我有:-
select count(id) as freq, location from my_table
group by location order by freq desc;
我完全不知道从这里该去哪里。
最佳答案
这种转换最好在发出查询的任何客户端中完成,但如果您必须在数据库中执行此操作,那么
select location,
sum(status = 1) AS status_1,
sum(status = 0) AS status_0
from my_table
group by location
这有点hackish,但是当status确实为1时,'status = 1'将计算为 bool 值true,MySQL将礼貌地将其转换为整数'1',然后将其求和。当 status 为 0 且 status = 0 计算结果为 true 时,情况也是如此。
关于mysql 对状态字段进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905586/