我正在开展一个项目,我必须列出每个问题得票率最高的解决方案。
每个问题都有两个解决方案,用户可以针对每个问题对一个解决方案进行投票。这是我目前的数据库。
+----------+------------+---------+
| id | id_problem | vote |
+----------+------------+---------+
| 1 | 1 | 25 |
| 2 | 1 | 10 |
| 3 | 2 | 18 |
| 4 | 2 | 2 |
| 5 | 3 | 6 |
| 6 | 3 | 7 |
| 7 | 4 | 11 |
| 8 | 4 | 4 |
| 9 | 5 | 5 |
| 10 | 5 | 2 |
+----------+------------+---------+
我想得到这样的结果:
(每个id_problem
投票最多的行
+----------+------------+---------+
| id | id_problem | vote |
+----------+------------+---------+
| 1 | 1 | 25 |
| 3 | 2 | 18 |
| 6 | 3 | 7 |
| 7 | 4 | 11 |
| 9 | 5 | 5 |
+----------+------------+---------+
答案 0 :(得分:0)
您可以使用group by
子句和max
聚合函数来获得预期结果,例如:
select id, id_problem, max(vote) as vote
from result
group by id_problem
order by id_problem
此处 SQL Fiddle 。
答案 1 :(得分:0)
SELECT
id,
id_problem,
max(vote)
from
tablename
group by
id_problem
order by
id_problem ASC
max(投票)确定更多投票,但它会汇总结果,然后您需要按id_problem进行分组,然后将其命令为asc。