Получить N на группу MYSQL

ЭТО НЕ ТАКОЙ ВОПРОС, ЧЕМ: Используя LIMIT внутри GROUP BY, чтобы получить N результатов для каждой группы?

но я допускаю, что это похоже.

Мне нужно выбрать первые 2 строки на человека. строки упорядочиваются по Полученному году

Проблема: есть вероятность, что в тот же месяц были введены 2 данных (дата введена в ГГГГ-ММ)

Запрос, который я пришел с (по указанному вопросу), застревает в цикле BIG.

SELECT *
FROM `table_data` as b
WHERE (
    SELECT count(*) FROM `table_data` as a
        WHERE a.Nom = b.Nom and a.year < b.year
    ) <= 2;

Пример данных:

  A  |   year   |  Nom
---------------------
  b  |  2011-01 | Tim
---------------------
  d  |  2011-01 | Tim
---------------------
  s  |  2011-01 | Tim
---------------------
  a  |  2011-03 | Luc
---------------------
  g  |  2011-01 | Luc
---------------------
  s  |  2011-01 | Luc

При экспорте:

  A  |   year   |  Nom
---------------------
  b  |  2011-01 | Tim
---------------------
  d  |  2011-01 | Tim
---------------------
  a  |  2011-03 | Luc
---------------------
  g  |  2011-01 | Luc

Ответ 1

(
 -- First get a set of results as if you only wanted the latest entry for each
 -- name - a simple GROUP BY from a derived table with an ORDER BY
  SELECT *
  FROM (
    SELECT *
    FROM `table_data`
    ORDER BY `year` DESC
  ) `a`
  GROUP BY `Nom`
)
UNION
(
 -- Next union it with the set of result you get if you apply the same criteria
 -- and additionally specify that you do not want any of the rows found by the
 -- first operation
  SELECT *
  FROM (
    SELECT *
    FROM `table_data`
    WHERE `id` NOT IN (
      SELECT `id`
      FROM (
        SELECT *
        FROM `table_data`
        ORDER BY `year` DESC
      ) `a`
      GROUP BY `Nom`
    )
    ORDER BY `year` DESC
  ) `b`
  GROUP BY `Nom`
)
 -- Optionally apply ordering to the final results
ORDER BY `Nom` DESC, `year` DESC

Я уверен, что есть более короткий способ сделать это, но сейчас я не могу, чтобы жизнь меня работала над тем, что это такое. Это работает, хотя - если у вас есть первичный ключ (что вам нужно) и что он называется id.