MySQL 计数相同的值

MySQL count identical values

我有这个 table 具有以下结构的命名奖品

`id` (PRIMARY)
`id_multiple`
`desc`
`winner`

我想 select 那些没有 winner (NULL) 的人如果他们有相同的 id_multiple 显示计数id_multiple.

还剩多少人获胜

例如,有这个值:

id_multiple | winner | desc
1           | NULL   | voucher
1           | jonh   | voucher
2           | NULL   | car
2           | NULL   | car

我想显示:

Left to win:
1 Voucher
2 Car

desc 对所有 id_multiple 都是一样的,所以使用 id_multiple 可能会产生歧义?)

你可以count一个case表达式:

SELECT   id_multiple, COUNT(CASE WHEN winner IS NULL THEN 1 END) AS left_to_win, `desc`
FROM     mytable
GROUP BY id_multiple, `desc`

或者,甚至更简单,利用 true 被解释为 1false 被解释为 0sum 表达式在数字上下文中:

SELECT   id_multiple, SUM(winner IS NULL) AS left_to_win, `desc`
FROM     mytable
GROUP BY id_multiple, `desc`

类似于:

SELECT id_multiple,count(id_multiple),`desc` 
FROM `yourtable`
WHERE `winner` IS NULL
GROUP BY `id_multiple`