1

假设我有以下“消息”表

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

我想要按日期排序的 Dave 与之交谈的人员列表。

Simon
James
John

我被困在如何在一个查询中不包含“Dave”的情况下对它们进行分组。

非常感谢。

4

3 回答 3

3

您似乎想要 Dave 正在与之交谈的不同人员列表:

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;
于 2013-09-08T12:29:59.133 回答
-1

这将为您提供 Dave 已发送消息并收到消息的每个人,按日期排序。

SELECT DISTINCT(Receiver) FROM messages WHERE Sender = 'Dave' ORDER BY date DESC
于 2013-09-08T12:19:04.173 回答
-1
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"
于 2013-09-08T12:19:13.863 回答