我只是想了解mysql的知识
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE species = 'dog' OR species = 'cat'
-> GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
+---------+------+----------+
有可能得到吗?
+---------+-----------+-------------+
| species | malecount | femalecount |
+---------+-----------+-------------+
| cat | 1 | 1 |
| dog | 1 | 2 |
+---------+-----------+-------------+
在单个查询中?
最佳答案
这是 MySQL
中可能的最短答案。
SELECT species,
SUM(sex = 'm') maleCount,
SUM(sex = 'f') femaleCount
FROM pet
GROUP BY species
MySQL 还支持内联 IF
语句:
SELECT species,
SUM(IF(sex = 'm',1,0)) maleCount,
SUM(IF(sex = 'f',1,0)) femaleCount
FROM pet
GROUP BY species
您还可以使用几乎适用于 RDBMS 的 CASE
:
SELECT species,
SUM(CASE WHEN sex = 'm' THEN 1 ELSE 0 END) maleCount,
SUM(CASE WHEN sex = 'f' THEN 1 ELSE 0 END) femaleCount
FROM pet
GROUP BY species
关于mysql - 如何在单行中计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15295618/