2016-03-25 25 views
0

Sorun başına en yüksek oyu seçmem gereken bir proje üzerinde çalışıyorum.SQL SELECT satırında en yüksek değere sahip problem_id aynı

Her sorunun iki çözümü vardır ve kullanıcılar sorun başına bir çözüm üzerinde oy kullanabilirler. Bu benim veritabanım şu an.

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

bu sonucu elde etmek istiyorum: (id_problem başına en yüksek oyu ile satır) Sen beklenen sonucu elde etmek max toplama fonksiyonu ile group by maddesini kullanabilir

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

cevap

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

max (oy) daha oyu belirler, ancak sonuç araya, o zaman id_problem göre gruplandırmak gerekir ve daha sonra bunu asc sipariş.

0

, örneğin:

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

İşte SQL Fiddle var .

+0

PK olduğu için kimliğini de isteyip istemediğinden emin değilim. – bassxzero

+0

Cevabı düzenledi .. –

İlgili konular