2013-04-15 5 views
0

У меня есть следующая таблица с некоторыми примерными данными.Получение записи MAX для самых последних серийных номеров

Record_ID Counter Serial Owner 
1   0   AAA  Jack 
2   1   AAA  Kevin 
3   0   BBB  Jane 
4   1   BBB  Wendy 

Основываясь на данных, подобных выше, я пытаюсь написать SQL запрос для MySQL, который получает запись с максимальным значением Counter на Serial число. У части, с которой я, похоже, возникла проблема с получением запроса, чтобы получить последние 50 уникальных серийных номеров, которые были обновлены.

Ниже приведен запрос, который я до сих пор использовал на основе this StackOverflow question.

SELECT * 
FROM `history` his 
    INNER JOIN(SELECT serial, 
        Max(counter) AS MaxCount 
       FROM `tracking` 
       WHERE serial IN (SELECT serial 
           FROM `history`) 
       GROUP BY serial 
       ORDER BY record_id DESC) q 
      ON his.serial = q.serial 
       AND his.counter = q.maxcount 
LIMIT 0, 50 
+0

Где находится точка, где положение в вашем подзапрос? – Limey

+0

Я хотел удалить его изначально, но 'WHERE serial IN (SELECT serial FROM \' history \ '' был там, где я пытался создать другой подзапрос, чтобы выбрать последние 50 уникальных серийных номеров, которые были обновлены. – musubi

+0

Не MySQL поддерживать команду Top 50? – Limey

ответ

1

Это выглядит как классический проблема, которую можно решить что-то вроде этого:

select his.Record_ID, his.Counter, his.Serial, his.Owner 
from History his 
inner join(
    select Serial, max(Counter) Counter 
    from History 
    group by Serial 
) ss on his.Serial = ss.Serial and his.Counter = ss.Counter 

Если вы хотите иметь определенные фильтры на наборе данных, то следует применять указанные фильтры подзапрос.

Другой источник с более подробного объяснения по проблеме здесь: SQL Select only rows with Max Value on a Column

+0

Решено ли решение решить проблему возврата всего 50 записей с последними обновленными Serials? .. – zavg

+0

@AdrianCarneiro Спасибо за ваш ответ. Однако, похоже, он не возвращает 50 последних уникальных серий, которые были обновлены. – musubi