これはあなたが文字通りここで望んでいることかもしれないと思います:
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);
デモ
(更新フィドル)
相関サブクエリを使用して、最大のuser_id
を見つけることができます および最大2番目のuser_id
status_id
ごとに 、次に、それらのそれぞれを2つの別々の列としてスピンアウトします。 GROUP_CONCAT
を使用する ここでは、CSVリストとして任意の数のユーザーに簡単に対応できるアプローチが望ましい場合があります。
また、MySQL 8以降を使用している場合は、ランク分析関数を利用できます。これも簡単です。