У меня есть эта таблица для документов (упрощенная версия здесь):
+------+-------+--------------------------------------+
| id | rev | content |
+------+-------+--------------------------------------+
| 1 | 1 | ... |
| 2 | 1 | ... |
| 1 | 2 | ... |
| 1 | 3 | ... |
+------+-------+--------------------------------------+
Как выбрать одну строку на один идентификатор и только наибольший оборот?
С приведенными выше данными результат должен содержать две строки: [1, 3, ...]
и [2, 1, ..]
. Я использую MySQL.
В настоящее время я использую проверки в цикле while
для обнаружения и перезаписи старых revs из набора результатов. Но является ли это единственным методом достижения результата? Разве нет решения SQL?
Обновление
Как показывают ответы, есть SQL-решение, а здесь демо-версия sqlfiddle.
Обновление 2
Я заметил, что после добавления вышеуказанного sqlfiddle скорость, с которой встал вопрос, превзошла скорость ответов. Это не было намерением! Скрипка основана на ответах, особенно на принятом ответе.