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