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