SELECT * FROM galleries JOIN (SELECT r1.random_id FROM galleries_holes AS r1 JOIN (SELECT (RAND() * (SELECT MAX(row_id) FROM galleries_holes)) AS row_id) AS r2 LEFT JOIN galleries on (galleries.id=r2.row_id) # i added WHERE r1.row_id >= r2.row_id AND galleries.id = 74580 # i added ORDER BY r1.row_id ASC LIMIT 1) as rows ON (id = random_id);