был вставлен в порядке (отсортировано)

ца: uuid, версия, дата и время

версия не уникальна, но идея состоит в том, чтобы извлекать только строки с самой последней датой и временем для данного uuid

SELECT * FROM table WHERE uuid='bla' GROUP BY version ORDER BY datetime desc

... конечно, получает результаты datetime asc - есть ли способ "предварительно упорядочить" группу с помощью desc, чтобы выбиралась только последняя версия?

Ответы на вопрос(3)

desc сгруппировать по:

SELECT * FROM table WHERE uuid = 'bla' GROUP BY version desc

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

 xingzhi.sg17 сент. 2015 г., 03:57
Хорошо, но работает только еслиdatetime был вставлен в порядке (отсортировано)
 haidarvm23 мая 2015 г., 13:50
почему никто этого не видит ... это работа и простой запрос: D
Решение Вопроса

и вы фильтруете по uid, вы можете просто использовать MAX без JOIN:

SELECT version, MAX(datetime) Maxdatetime
FROM table
WHERE uuid='bla'
GROUP BY version

Однако, если в таблице было больше полей или вы не фильтруетеuid - сначала нужно получить МАКСИМАЛЬНОЕ время / дату для каждой версии, затем выбрать строку:

SELECT t.uuid, t.version, t.datetime 
FROM table t JOIN (
    SELECT version, MAX(datetime) Maxdatetime
    FROM table
    WHERE uuid='bla'
    GROUP BY version
) r ON t.version = r.version AND t.datetime = r.Maxdatetime
WHERE t.uuid='bla'
ORDER BY t.datetime desc
 ina06 апр. 2015 г., 05:26
Необходимо ли повторять предложение WHERE дважды?
 The Scrum Meister07 апр. 2015 г., 06:28
@ina, да по соображениям производительности.
 mmrtnt14 июн. 2013 г., 17:59
Именно то, что мне было нужно с небольшими изменениями - спасибо!
SELECT * FROM 
(SELECT * FROM table WHERE uuid='bla' ORDER BY datetime desc) table 
GROUP BY version;

Ваш ответ на вопрос