2013-07-22 3 views
2

У меня есть таблица чата, как показано на картинке. Я хочу сгруппировать список чатов, как в стиле facebook. Table after selecting the conversations of user 2MySql Как получить записи для показа в списке чата чата

Здесь пользователь 2 опознан и его разговоры выбираются с помощью

SELECT * 
FROM `chat` `t` 
WHERE `from` =2 
OR `to` =2 
ORDER BY sent DESC 

Но здесь я хочу последнюю одну запись между 2 и любым другим пользователем. Где 2 может находиться либо от столбца, либо от столбца. В качестве конечного результата он должен вернуть 2 записи с идентификаторами 25 и 17 соответственно.

+1

Тем не менее изо всех сил? Рассмотрите возможность создания sqlfiddle – Strawberry

ответ

3
SELECT * , (
r.from + r.to 
) AS dist 
FROM (

SELECT * 
FROM `cometchat` t 
WHERE (
t.from =2 
OR t.to =2 
) 
ORDER BY t.sent DESC 
)r 
GROUP BY dist 
ORDER BY r.sent DESC 
+0

Спасибо, что это помогло мне в моем запросе ..... –

1

Попробуйте

SELECT * 
FROM `chat` `t` 
WHERE id IN (SELECT MAX(s.id) FROM chat s WHERE s.`from` =2 
OR s.`to` =2 GROUP BY (IF(s.`from`=2, s.`to`, s.`from`))) 
ORDER BY sent DESC 
Смежные вопросы