Je pense que c'est peut-être ce que vous voulez littéralement ici :
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);
Démo
(votre mise à jour Fiddle)
Nous pouvons utiliser des sous-requêtes corrélées pour trouver le maximum user_id
et deuxième au maximum user_id
pour chaque status_id
, puis divisez chacun de ceux-ci en deux colonnes distinctes. Utiliser un GROUP_CONCAT
Cette approche pourrait être préférable ici, car elle vous permettrait également de gérer facilement n'importe quel nombre d'utilisateurs sous forme de liste CSV.
De plus, si vous utilisiez MySQL 8+ ou une version ultérieure, nous pourrions tirer parti des fonctions d'analyse de classement, ce qui serait également plus facile.