认为我有一个包含两个字段的表:ID
and State
。状态值(即布尔值)可以是 0 或 1。ID
不是唯一的,因此该表如下所示:
ID | State |
-----------------
1 | true |
-----------------
1 | false |
-----------------
2 | false |
-----------------
3 | true |
-----------------
1 | true |
现在,我想对按 ID 字段分组的每一行进行计数,并将 State 作为结果集中的两个不同列。所以它应该看起来像这样:
ID | TrueState | FalseState |
------------------------------------
1 | 2 | 1 |
------------------------------------
2 | 0 | 1 |
------------------------------------
3 | 1 | 0 |
怎么做?
这是一个pivot查询,mysql不支持。解决方法很快就会变得丑陋,但由于您只会生成两个新列,所以它不会非常丑陋,只是有点令人不快:
SELECT SUM(State = True) AS TrueState, SUM(State = False) AS FalseState,
SUM(State is NULL) AS FileNotFoundState
...
基本上state = true
将评估为布尔值 true/false,MySQL 将其类型转换为整数0
or 1
,它们可以是SUM()
med up.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)