SQL SELECT 具有最高值的行,其中 problem_id 相同
SQL SELECT row with highest value where problem_id is the same
我正在做一个项目,我必须列出每个问题得票最高的解决方案。
每个问题都有两个解决方案,用户可以对每个问题的一个解决方案进行投票。这是我目前的数据库。
+----------+------------+---------+
| 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 |
+----------+------------+---------+
您可以使用 group by
子句和 max
聚合函数来获得预期的结果,例如:
select id, id_problem, max(vote) as vote
from result
group by id_problem
order by id_problem
这里是SQL Fiddle。
SELECT
id,
id_problem,
max(vote)
from
tablename
group by
id_problem
order by
id_problem ASC
max(vote)决定了更大的投票,但它聚合了结果,然后你需要按id_problem分组,然后升序排列。
我正在做一个项目,我必须列出每个问题得票最高的解决方案。
每个问题都有两个解决方案,用户可以对每个问题的一个解决方案进行投票。这是我目前的数据库。
+----------+------------+---------+
| 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 |
+----------+------------+---------+
您可以使用 group by
子句和 max
聚合函数来获得预期的结果,例如:
select id, id_problem, max(vote) as vote
from result
group by id_problem
order by id_problem
这里是SQL Fiddle。
SELECT
id,
id_problem,
max(vote)
from
tablename
group by
id_problem
order by
id_problem ASC
max(vote)决定了更大的投票,但它聚合了结果,然后你需要按id_problem分组,然后升序排列。