Penso che questo potrebbe essere quello che vuoi letteralmente qui:
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);
Dimostrazione
(il tuo aggiornamento Fiddle)
Possiamo usare sottoquery correlate per trovare il massimo user_id
e dal secondo al massimo user_id
per ogni status_id
, quindi ruota ciascuno di questi come due colonne separate. Utilizzando un GROUP_CONCAT
potrebbe essere preferibile in questo caso, poiché ti consentirebbe anche di ospitare facilmente un numero qualsiasi di utenti come un elenco CSV.
Inoltre, se stavi utilizzando MySQL 8+ o versioni successive, potremmo sfruttare le funzioni di analisi dei ranghi, il che sarebbe anche più semplice.