如何按上次发送的方式组织邮件列表

时间:2011-11-08 22:39:00

标签: mysql database group-by sql-order-by

我正在努力寻找从mysql表中检索正确结果的正确方法。 我有一个用于存储消息的表:

    CREATE TABLE IF NOT EXISTS `messages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `who` int(11) NOT NULL,
  `to` int(11) NOT NULL,
  `message` varchar(2000) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`id`)
)

此表存储来自所有成员之间所有会话的所有消息。 要组织结果,我正在使用此查询:

SELECT * FROM messages group by who order by date desc

它根据发件人正确分组邮件,但是根据某个成员写的第一条消息的日期对其进行排序。我想让它根据最后一条消息的日期对输出进行排序。 请帮我找到解决方法,我有一种感觉它必须简单,但我还是看不出办法。如果需要,准备提供更多解释。 谢谢大家!

4 个答案:

答案 0 :(得分:0)

如果您只想在上次发送日期前订购,只需将查询更改为:

SELECT * FROM messages ORDER BY date DESC

这将是最近的第一个,最后一个最后的

答案 1 :(得分:0)

虽然在使用SELECT *时我不确定您使用GROUP BY尝试实现的目标,但这会将最后一个日期作为订单的基础:

SELECT * FROM messages GROUP BY who ORDER BY MAX(date) DESC;

答案 2 :(得分:0)

为什么不呢 从邮件订单中选择*按谁asc,date desc ?

答案 3 :(得分:0)

试试这个:

选择不同的m.who,m。* FROM消息按日期排序desc