То, что вы делаете, является действительным - оно упорядочит результаты в порядке убывания на a
, но случайным образом упорядочит связи.
Однако, чтобы сделать то, что вы хотите, сначала нужно использовать подзапрос, чтобы получитьпоследние 100 записей и затем случайным образом сортируют результаты этого подзапроса, используя внешний запрос:
SELECT * FROM
(
SELECT * FROM table1
ORDER BY date DESC
LIMIT 100
) T1
ORDER BY RAND()