I have a simple table maintaining messages between users. The table structure looks like
sender receiver message sendtime
1 2
To me it feels simpler to use an own ID based on the sender and receiver. No JOIN
and just one GROUP BY
needed:
SELECT sender, receiver, message, MAX(time)
FROM (
SELECT *,
CASE WHEN sender < receiver
THEN CONCAT(sender,'&', receiver)
ELSE CONCAT(receiver,'&', sender) END AS fromto
FROM data) AS a
GROUP BY fromto