2016-03-25 15 views
0

私は、問題ごとに最も高い票を持つ解決策をリストアップする必要があるプロジェクトに取り組んでいます。problem_idが同じ最大値を持つSQL SELECT行

すべての問題には2つの解決策があり、ユーザーは問題ごとに1つの解決策に投票できます。これは私のデータベースです。

+----------+------------+---------+ 
| 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あたり最高票を持つ行)あなたが期待される結果を得るためにmax集計関数でgroup by句を使用することができます

+----------+------------+---------+ 
| id | id_problem | vote | 
+----------+------------+---------+ 
| 1  |  1  | 25 | 
| 3  |  2  | 18 | 
| 6  |  3  | 7 | 
| 7  |  4  | 11 | 
| 9  |  5  | 5 | 
+----------+------------+---------+ 

答えて

0
SELECT 
    id, 
    id_problem, 
    max(vote) 
from 
    tablename 
group by 
    id_problem 
order by 
    id_problem ASC 

MAX(投票)が大きい投票を決定し、それが結果を集計し、あなたはid_problemによってグループに必要な、その後、ASCそれを注文します。

0

を、例えば:

select id, id_problem, max(vote) as vote 
from result 
group by id_problem 
order by id_problem 

ここSQL Fiddleです。

+0

私は彼がIDであることを望んでいるのかどうかはわかりませんが、PKです。 – bassxzero

+0

答えを編集しました.. –