我正在尝试获取每个 FANOF_ID 的总票数(例如:我)。问题是粉丝每天可以为同一个 FANOF_ID 投票(例如:David Bowie RIP)
所以每天我都可以投票给大卫·鲍伊作为我最喜欢的歌手
ID CREATED FAN_ID FANOF_ID
15 2016-01-24 3 3
16 2016-01-25 3 3
17 2016-01-25 2 3
因此,从该示例中,我应该得到 FANOF_ID (3) 的“总计”2 个粉丝的结果
这是我实际的 SQL
SELECT
distinct `fans_fanofvote`.`fan_id`,
COUNT(`fans_fanofvote`.`fanof_id`) AS `total`
FROM `fans_fanofvote`
GROUP BY `fans_fanofvote`.`fanof_id`
ORDER BY `total` DESC
但它返回 3 条记录,即使我在 fan_id 上使用不同的,它也不会工作。如何让 mySQL 对 FAN_ID 执行不同操作
My SQL 应该返回这样的一条记录:
FANOF_ID TOTAL
3 2
最佳答案
您需要COUNT(DISTINCT)
。但是,您必须小心计算的内容 (fan_id
) 以及通过 (fanof_id
) 聚合的内容:
SELECT fov.fanof_id,
COUNT(DISTINCT fov.fan_id) AS total
FROM fans_fanofvote fov
GROUP BY fov.fanof_id
ORDER BY total DESC;
请注意,表别名使查询更易于阅读。除非确实需要,否则不要使用反勾。
关于mySQL语句获取最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35046513/