Ik denk dat dit is wat je hier letterlijk wilt:
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
(je update Fiddle)
We kunnen gecorreleerde subquery's gebruiken om de max user_id
. te vinden en tweede tot max user_id
voor elke status_id
, en draai ze vervolgens elk uit als twee afzonderlijke kolommen. Een GROUP_CONCAT
gebruiken aanpak kan hier de voorkeur hebben, omdat u hiermee ook gemakkelijk een willekeurig aantal gebruikers kunt opnemen als een CSV-lijst.
Als u MySQL 8+ of hoger zou gebruiken, zouden we ook kunnen profiteren van de ranganalysefuncties, wat ook eenvoudiger zou zijn.