Как я могу получить все последние "версии" из моей таблицы с одним запросом MySQL? - PullRequest
2 голосов
/ 24 августа 2009

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

unique_id | name | original | version
-----------------
1 | a1 | 1 | 1

2 | b1 | 2 | 1

3 | a2 | 1 | 2

4 | a3 | 1 | 3

5 | c1 | 5 | 1

6 | b2 | 2 | 2

Теперь из этого должно быть очевидно, что существует форма контроля версий, где мы отслеживаем исходный документ, а также отслеживаем версию текущего документа.

Если я хочу получить последнюю версию определенного документа, я делаю что-то вроде следующего.

SELECT * FROM table WHERE original = (SELECT original FROM table WHERE id = 3) ORDER BY version DESC

Мой вопрос: как мне получить список всех самых последних версий в таблице только с одним запросом?

1 Ответ

2 голосов
/ 24 августа 2009

Идея заключается в

  • построить список всех оригинальных идентификаторов с текущей максимальной версией
  • присоединитесь к вашей таблице с этим списком уникальных идентификаторов.
SELECT *
FROM table t
     INNER JOIN (     
       SELECT original, MAX(version) as version
       FROM tabel
       GROUP BY original
     ) tmax ON tmax.original = t.original and tmax.version = t.version
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...