具有最高值的SQL SELECT行,其中problem_id是相同的

时间:2016-03-25 00:06:01

标签: php mysql sql dao

我正在开展一个项目,我必须列出每个问题得票率最高的解决方案。

每个问题都有两个解决方案,用户可以针对每个问题对一个解决方案进行投票。这是我目前的数据库。

+----------+------------+---------+
|    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    |
+----------+------------+---------+

2 个答案:

答案 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。