2015-06-29 4 views
0

в MySQL:потребность группы по данным в MySQL

Есть данные в данных:

ColA | ColB | Rank 
1  2  0 
1  3  1 
2  1  0 
3  1  0 
3  2  1 

Сохраняя Col А в качестве ключевого поля, необходимо получить данные на основе самого высокого ранга т.е. выход:

ColA | ColB | Rank 
1  3  1 
2  1  0 
3  2  1 

любые идеи ..

ответ

3

Вы можете сделать это следующим образом:

SELECT T1.ColA, T2.ColB, T1.Rank 
FROM TableName T2 JOIN 
(SELECT ColA,MAX(Rank) as Rank 
FROM TableName 
GROUP BY ColA) T1 ON T1.ColA=T2.ColA AND T1.Rank=T2.Rank 

Пояснение:

  1. Внутренний запрос (Т1) выбирает запись с самим высоким рангом для каждого значения ColA.
  2. Внешний запрос (T2) используется для выбора ColB относительно значений ColA и ранга из T2.

Результат:

ColA ColB Rank 
-------------------- 
1  3  1 
2  1  0 
3  2  1 

видете в SQL Fiddle

Смежные вопросы