Извиняюсь, если тема устарела...
Сергей Тарасов,
Данный запрос не работает, т.к. DISTINCT применяется ко всему SELECT, а не к отдельным полям.
У меня в данный момент похожая с топик-стартером проблема.
Есть таблица с историей изменения каких-то величин:
id | key | value | time
id - auto_increment, первичный ключ
key - название переменной
value - значение переменной
time - время в которое это значение было зафиксировано.
Нужно одним запросом выбрать последние значения каждой переменной.
То есть, по примеру ForJest, чтобы вернулось две записи:
1|2
2|4
ORDER BY `time` DESC не подходит потому что в одну выборку попадает несколько записей об одной и той же переменной, которая часто редактируется, а те что редко редактируются оказываются в самом конце выборки. Если вообще не обрезаются LIMIT'ом.
ORDER BY `key` ASC, ORDER BY `time` DESC тоже бессмысленен.
ORDER BY `time`DESC, ORDER BY `key` ASC аналогично.
Как я уже сказал DISTINCT выбирает только полностью уникальные записи, для всего SELECT.
GROUP BY дает непредсказуемые результаты по сортировке, то есть результаты сортируются только после объединения, а как уж они там объединятся... только MySQL ведает.
Как извратиться с помощью COUNT и HAVING пока не придумал, да и сдается мне что производительность такого запроса с ростом количества записей будет резко падать...
Буду благодарен за подсказку.