выборка, такая, чтобы сначала ORDER BY а потом DISTINCT (всё это с LIMIT ом)

rocky5

Guest
выборка, такая, чтобы сначала ORDER BY а потом DISTINCT (всё это с LIMIT ом)

Конечно вопрос очень простой. =)) а может и нет.

В таблице есть поля name и date (имя и дата)
Нужно отобрать 10 уникальных имён c последними датами;

Казалось бы, можно сделать так:

SELECT DISTINCT name FROM $mytable ORDER BY date DESC LIMIT 10;

НО вспомним документацию:
"Если LIMIT # указывается совместно с DISTINCT, MySQL остановится, как только найдет # уникальных строк."

То есть MYSQL сначала находит 10 уникальных имён, а УЖ ПОТОМ сортирует по дате :( :( :(

А надо, сначала отсортировать по дате, а потом взять 10 уникальных имён.

Подскажите как это сделать КРАСИВО :-/
 

chira

Новичок
Код:
SELECT name, MAX(`date`)  last_date
FROM $mytable 
GROUP BY name
ORDER BY last_date DESC 
LIMIT 10
 

rocky5

Guest
Спасибо за наводку, но теперь он насколько я вижу =) чтото не то делает.. Даже не могу описать что именно.

Попробую дальше покумекать сам. может хотябы смогу сформулировать что теперь творится =)

-~{}~ 21.02.05 23:12:

chira

Ура!! Спасибо... Оказалось надо убрать опострофы в вызове MAX ()...

Заработало. Сеньки!
 

chira

Новичок
если у тебя поле названо как date, то его желательно переименовать пока не поздно ...
 

rocky5

Guest
Нет, оно названо как thedate =) я просто утрировал.. таскать псевдокод =)

thedate тоже не идеал.. но тут простенький скриптик, для него достаточно.
 
Сверху