mysql 对状态字段进行分组

标签 mysql sql

我有一张 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/

相关文章:

java - 如何使用从表中选择数据,进行计算,然后将新数据更新到与第一个主键相同的另一个表中?

mysql - SQL仅选择列上具有最大值的行

php - 如何在添加行时获取表列的值

java代码大量使用mysql

php - 输入文本和特殊字符以及MySQL

sql - 动态搜索,产生搜索结果链接(反向路由)

Sql PIVOT 和字符串连接聚合

php - 选择数据库中每个表的最后一条记录

mysql - 照片关键字和数据库 - 哪种实现?

java - 使用 count() 时命名参数中的 JPA 错误