se puoi usare le subquery (mysql >= 4.1) prova così

codice:
select * from (
SELECT idmedia, prodotto.*, media.url,REPLACE(categories.c_name,' ','_') AS nomecategoria, position FROM prodotto JOIN media ON media.prodotto=prodotto.idprodotto JOIN categories ON categories.id = prodotto.categoria WHERE categoria = '40' ORDER BY rand() LIMIT 4) as tab
order by idmedia asc