Zakładając, że time
to czas, w którym rekord został wstawiony, uzyskasz ostatnie 10 wierszy z tabeli:
SELECT * FROM `table` WHERE `amount` > `amount2` AND `code` = '$code'
ORDER BY `time` DESC LIMIT 10
Teraz możesz użyć wyniku jako tabeli tymczasowej, posortować ją losowo (ponieważ to tylko 10 wierszy) i zwrócić jeden wiersz:
SELECT * FROM (
SELECT * FROM `table` WHERE `amount` > `amount2` AND `code` = '$code'
ORDER BY `time` DESC LIMIT 10
) AS temptable
ORDER BY RAND()
LIMIT 1