【发布时间】:2015-05-19 12:16:35
【问题描述】:
我试图解决 MySQL 中一个明显简单的问题:我有一个由 3 个字段组成的表,我想形成一个查询,该查询返回一个选择为 DISTINCT 的字段和另外两个返回剩余 COUNT 的列满足特定条件时的两个字段。
为了说明(从左到右分别命名为first、second和third的列):
| VzokAAD | aaa | 0 |
| VziAAAT | bbb | 0 |
| VziAAAT | ccc | 1 |
| VziAAAT | ddd | 0 |
| W0cZAAT | eee | 1 |
| VziNAAT | fff | 1 |
| VzpqAAD | ggg | 1 |
| VzpqAAD | hhh | 1 |
我当前的查询结构如下:
SELECT DISTINCT(first) AS field_one, COUNT(second)
FROM table WHERE third = 0 GROUP BY field_one;
所以上面的查询会返回:
| VzokAAD | 1 |
| VziAAAT | 2 |
我可以把查询改成这样:
SELECT DISTINCT(first) AS field_one, COUNT(second)
FROM table WHERE third = 1 GROUP BY field_one;
它会返回:
| VzpqAAD | 2 |
| VziNAAT | 1 |
| W0cZAAT | 1 |
| VziAAAT | 1 |
如何将两个查询组合在一起,以便获得第一列 GROUPED 和 DISTINCT 以及另外两列,其 COUNT 分别为第三 =1 和第三 =0。
基本上是这样的(当然是错误的):
SELECT DISTINCT(first) AS field_one, COUNT(second WHERE third = 1)
AS alpha, COUNT(second WHERE third = 0) AS beta FROM table GROUP BY field_one;
我尝试使用 CASE 和 IF 控制流函数,但我只设法获得在单个列中定义的结果。
感谢任何愿意伸出援手的人!
【问题讨论】:
标签: mysql sql database conditional-statements