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
被解释为 1
而 false
被解释为 0
的 sum
表达式在数字上下文中:
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`
我有这个 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
被解释为 1
而 false
被解释为 0
的 sum
表达式在数字上下文中:
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`