Način brez dodatne tabele. Vsi zadnji chati userja id=123, pogrupirani, sortirani po datumu.
V rezultatu "user1" je vedno userid=123, v "user2" je pa userid tistega s katerim je chatal.
Sporoči koliko časa se query izvaja in EXPLAIN.
SET @user_id = 123;
SELECT
IF(from_user = @user_id, from_user, to_user) AS user1,
IF(from_user = @user_id, to_user, from_user) AS user2,
`date`
FROM `zasebna_sporocila`
WHERE from_user=@user_id OR to_user=@user_id
GROUP BY user1, user2
ORDER BY `date` DESC;