考虑一个status
包含两个值之一的字段的表:
| status | set('active','default') | YES | | active |
我需要知道表中有多少条记录,还有多少条status
设置为active
. 我注意到每个记录集的SUM
返回值和每个记录集的返回值:1
active
2
default
mysql> select count(*), sum(status) from users;
+----------+-------------+
| count(*) | sum(status) |
+----------+-------------+
| 3 | 4 |
+----------+-------------+
1 row in set (0.00 sec)
mysql> select status from users;
+---------+
| status |
+---------+
| default |
| active |
| active |
+---------+
3 rows in set (0.00 sec)
我可以依赖这种行为吗?这是一种不好的做法吗?
给自己答案!
在单个查询中在 OP 中执行查询的更好方法是按状态显式分组:
除了更清楚意图之外,该解决方案还适用于
status
具有两个以上可能值的情况。