Saya pikir ini mungkin yang Anda inginkan di sini:
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
(Fiddle pembaruan Anda)
Kita dapat menggunakan subkueri yang berkorelasi untuk menemukan user_id
maks. dan user_id
kedua hingga maksimal untuk setiap status_id
, lalu putar masing-masing sebagai dua kolom terpisah. Menggunakan GROUP_CONCAT
pendekatan mungkin lebih disukai di sini, karena itu juga akan memungkinkan Anda untuk dengan mudah mengakomodasi sejumlah pengguna sebagai daftar CSV.
Selain itu, jika Anda menggunakan MySQL 8+ atau lebih tinggi, kami dapat memanfaatkan fungsi analisis peringkat, yang juga akan lebih mudah.