выбрать случайный из группы "наибольших"

Лысый

Новичок
выбрать случайный из группы "наибольших"

Здравствуйте, есть таблица `rate` с записями
у записи есть имя и дата


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


SELECT id, name, MAX( moment ) , UNIX_TIMESTAMP( `moment` ) AS date
FROM `rate`
GROUP BY `name`
ORDER BY RAND( )
LIMIT 3
то есть сначала идёт группировка по имени
из групп выбираются только максимальные по дате
а из них уже случайные

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

спасибо если кто то вдумается ибо у меня уже мозг лопнул
 

Wicked

Новичок
Если я тебя правильно понял, то тебе надо:
ORDER BY MAX(moment) desc, RAND()
 

Лысый

Новичок
погоди
так ты осортируешь группы меджду собой по максимуму даты и что возьёшь?
прости я просто не могу в синтаксис въехать
что тут RAND() даёт?
 

chira

Новичок
Лысый
если тип поля moment DATETIME
Код:
SELECT 
  substr(MAX(CONCAT(moment,id)),20) as id
, substr(MAX(CONCAT(moment,name)),20) as name
, MAX( moment ) as moment
, MAX(UNIX_TIMESTAMP( `moment` )) AS date
FROM `rate`
GROUP BY `name`
ORDER BY RAND()
LIMIT 3
 
Сверху