Давайте притворимся, что у меня есть следующая таблица «сообщений»
ID (auto) Sender Receiver Msg Date (datetime) 1 Dave John Hi 01/01/2013 2 John Dave Hello 02/01/2013 3 James Dave U there? 02/02/2013 4 Dave James Yup 02/03/2013 5 Dave Simon Hey 02/03/2013
Я хочу, чтобы список людей, с которыми Дэйв разговаривает, упорядочен по дате.
Simon James John
Я застрял в том, как группировать их, не включая «Дэйв» в одном запросе.
Большое спасибо.
Кажется, вам нужен отличный список людей, с которыми разговаривает Дэйв:
select (case when receiver = 'Dave' then Sender else Receiver end) from messages m where 'Dave' in (Receiver, Sender) group by (case when receiver = 'Dave' then Sender else Receiver end) order max(date) desc;
SELECT Receiver FROM messages WHERE Sender = "Dave" AND Receiver NOT IN (SELECT Sender FROM messages WHERE Receiver = "Dave") UNION SELECT Sender FROM messages WHERE Receiver = "Dave"
Это даст вам всех Дэйв отправил сообщение и получил сообщение от заказанного по дате.
SELECT DISTINCT(Receiver) FROM messages WHERE Sender = 'Dave' ORDER BY date DESC