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