Supponendo che time
è l'ora in cui è stato inserito il record, questo ti darà le ultime 10 righe dalla tabella:
SELECT * FROM `table` WHERE `amount` > `amount2` AND `code` = '$code'
ORDER BY `time` DESC LIMIT 10
Ora puoi utilizzare il risultato come tabella temporanea, ordinarlo in modo casuale (dato che sono solo 10 righe) e restituire una riga:
SELECT * FROM (
SELECT * FROM `table` WHERE `amount` > `amount2` AND `code` = '$code'
ORDER BY `time` DESC LIMIT 10
) AS temptable
ORDER BY RAND()
LIMIT 1