Myślę, że może to być to, czego dosłownie chcesz tutaj:
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);
Demo
(Twoja aktualizacja Fiddle)
Możemy użyć skorelowanych podzapytań, aby znaleźć maksymalny user_id
i drugi do maksimum user_id
dla każdego status_id
, a następnie wykręć każdy z nich jako dwie oddzielne kolumny. Korzystanie z GROUP_CONCAT
podejście może być tutaj preferowane, ponieważ pozwoliłoby to również łatwo pomieścić dowolną liczbę użytkowników jako listę CSV.
Ponadto, jeśli używasz MySQL w wersji 8 lub nowszej, moglibyśmy skorzystać z funkcji analizy rang, co również byłoby łatwiejsze.