2013-04-29 5 views
0

Я много искал, но я не могу найти ответ или что-то рядом.MySQL найти лучшие результаты для каждой группы

У меня есть таблица вроде этого:

id    int(11) NO PRI  auto_increment 
attribute_id int(11) YES   
user_id   int(11) YES   
result   int(11) YES    
x10    int(11) YES 

мне нужно около 5 результатов от каждого attribute_id.

attribute_id10 может быть любым числом, поэтому сначала мне нужно проверить attribute_id, а затем я должен проверить результаты для каждого атрибута_ид.

Я не могу узнать, как я это делаю без какого-либо языка программирования, кроме MySQL, но я знаю, что вы можете.

Пример:

attribute_id result 
1    200 
1    149 
1    123 
2    322 
2    321 
2    300 
3    ... 
3    ... 

И так далее.

+0

Короче говоря, вы хотите, чтобы получить первые пять highes результат для каждого attribute_ID? –

+0

Вы читали о 'UNION' –

+0

Я хочу получить пять значений для каждого атрибута_id –

ответ

1
SELECT attribute_id, result 
FROM TableName a 
WHERE 
     (
      SELECT COUNT(*) 
      FROM TableName b 
      WHERE a.attribute_id = b.attribute_id 
        AND a.result <= b.result 
     ) <= 5 
0
 SELECT  attribute_id, result 
    FROM TableName a 
     WHERE 
    (
     SELECT COUNT(*) 
     FROM TableName b 
     WHERE a.attribute_id = b.attribute_id 
       AND a.result <= b.result 
    ) <= 5 order by result DESC; 
Смежные вопросы