我正在使用MySQL数据库版本5.0.41(和PHP 5.2.6,虽然这可能与此问题无关)。
我有一个名为votes
的表,其中包含以下字段:id
,item_id
,vote_value
。
每当站点上的用户对项目提交肯定投票时,将创建具有相应item_id
和正数(即1)的新行。当投票结果为负时,将创建一行,其中包含相应的item_id
和一个负数(即-1)。
我想用一个查询(如果可能的话)选择投票最多的item_id。
要做到这一点,我首先需要总结每个人item_id
的所有投票(得到一个像38或-14这样的数字),然后选择该数字的最大值。
我不知道如何为此编写查询。
谢谢!
答案 0 :(得分:3)
SELECT item_id, SUM(vote_value) AS sum
FROM votes
GROUP BY item_id
ORDER BY sum DESC
LIMIT 1
答案 1 :(得分:1)
您可以执行以下操作:
SELECT item_id, SUM(vote_value) AS total, COUNT(id) AS c
FROM votes
GROUP BY item_id
ORDER BY total DESC, c DESC
LIMIT 1