Considere uma tabela com um status
campo que contém um dos dois valores:
| status | set('active','default') | YES | | active |
Preciso saber quantos registros existem na tabela e, além disso, quantos têm o status
conjunto definido como active
. Percebo que SUM
retorna 1
para cada registro definido para active
e 2
para cada registro definido para 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)
Posso confiar neste comportamento? Isso é uma prática ruim?
Responda a si mesmo!
Uma maneira melhor de realizar a consulta no OP em uma única consulta seria agrupar explicitamente por status :
Além de ficar mais claro quanto à intenção , essa solução também funciona para o caso em que
status
há mais de dois valores possíveis.