Jeg tror, at det måske er det, du bogstaveligt talt ønsker her:
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 opdateringsviolon)
Vi kan bruge korrelerede underforespørgsler til at finde det maksimale user_id
og næst-til-maks user_id
for hver status_id
, og drej derefter hver af dem ud som to separate kolonner. Brug af en GROUP_CONCAT
tilgang kan være at foretrække her, da den også giver dig mulighed for nemt at rumme et hvilket som helst antal brugere som en CSV-liste.
Desuden, hvis du brugte MySQL 8+ eller nyere, så kunne vi drage fordel af de rank analytiske funktioner, som også ville være nemmere.