SELECT * FROM (SELECT MAX(sending_time) as time, CASE WHEN sender_id_id = 7 THEN receiver_id_id WHEN receiver_id_id = 7 THEN sender_id_id END FROM forum_message WHERE (receiver_id_id = 7 OR sender_id_id = 7) GROUP BY CASE WHEN sender_id_id = 7 THEN receiver_id_id WHEN receiver_id_id = 7 THEN sender_id_id END) AS T JOIN forum_message ON T.time = forum_message.sending_time ORDER BY T.time, forum_message.sender_id_id DESC;