我将此表命名为具有以下结构的奖品
`id` (PRIMARY)
`id_multiple`
`desc`
`winner`
我想选择那些没有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
可能不明确吗?)
答案 0 :(得分:3)
类似的东西:
cache_page
答案 1 :(得分:2)
你可以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`
或者更简单,使用sum
表达式,利用true
被解释为1
而false
被解释为数字0
的事实上下文:
SELECT id_multiple, SUM(winner IS NULL) AS left_to_win, `desc`
FROM mytable
GROUP BY id_multiple, `desc`