Creo que esto podría ser lo que literalmente quieres aquí:
SELECT DISTINCT
status_id,
(SELECT MAX(user_id) FROM comments c2 WHERE c1.status_id = c2.status_id) user_1,
(SELECT user_id FROM comments c2 WHERE c1.status_id = c2.status_id
ORDER BY user_id LIMIT 1 OFFSET 1) user_2
FROM comments c1
WHERE user_id IN (2,3);
Demostración
(tu actualización Fiddle)
Podemos usar subconsultas correlacionadas para encontrar el user_id
máximo y de segundo a máximo user_id
para cada status_id
, y luego haga girar cada uno de ellos como dos columnas separadas. Usando un GROUP_CONCAT
El enfoque podría ser preferible aquí, ya que también le permitiría acomodar fácilmente cualquier número de usuarios como una lista CSV.
Además, si estuviera utilizando MySQL 8+ o superior, podríamos aprovechar las funciones analíticas de clasificación, que también serían más fáciles.