Esto ni siquiera te debe estar funcionando en SQL Server... Tiene errores graves ya en SQL estándar.
- TOP es una cláusula de SQL Server, no de MySQL. MySQL usa LIMIT y no se pone en el SELECT sino al final de todo.
- ORDER BY y GROUP BY no van allí sino después del WHERE.
- Si vas a usar una subconsulta con IN() en el WHERE contra un campo, la subconsulta debe devolver un sólo campo, y tu estás pidiendo tres.
- Esa forma de hacer el IN() no tiene sentido para lo que quieres conseguir. Eso se obtiene usando un INNER JOIN.