Jag tror att det här kan vara vad du bokstavligen vill ha här:
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
(din uppdateringsfiol)
Vi kan använda korrelerade underfrågor för att hitta max user_id
och näst högsta user_id
för varje status_id
, och snurra sedan var och en av dem som två separata kolumner. Använder en GROUP_CONCAT
tillvägagångssätt kan vara att föredra här, eftersom det också skulle göra det möjligt för dig att enkelt ta emot valfritt antal användare som en CSV-lista.
Dessutom, om du använde MySQL 8+ eller senare, skulle vi kunna dra fördel av de rankanalytiska funktionerna, vilket också skulle vara enklare.