假设我有一个包含两个字段的表:ID
和 State
。状态值(即 bool 值)可以是 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 |
怎么做?
最佳答案
这是一个主查询,mysql 不支持。解决方法很快就会变得丑陋,但由于您只会生成两个新列,因此它不会丑陋得可怕,只是有点令人不快:
SELECT SUM(State = True) AS TrueState, SUM(State = False) AS FalseState,
SUM(State is NULL) AS FileNotFoundState
...
基本上 state = true
将评估为 bool 值 true/false,MySQL 将类型转换为整数 0
或 1
,这它们可以 SUM()
med up 吗?
关于MySQL 将 bool 字段计为两个不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386616/