我有一个MySQL查询我在发件人 的最新消息的排序有一个问题在这里是我下面的查询:MySQL查询排序上连接表
SELECT
`Mes`.`fromid`,
`Mes`.`is_read`,
`Mes`.`id` AS `mesid`,
`Mes`.`message`,
max(Mes.date) AS `date`,
`User`.`username`,
`User`.`MemberID` AS `Uid`
FROM `messages` AS `Mes`
INNER JOIN `users` AS `User` ON User.MemberID = Mes.fromid
WHERE (Mes.toid = 5 AND Mes.fromid <> 5)
GROUP BY `Mes`.`fromid`
ORDER BY `date` DESC
这里是从数据库中我的表: 用户表
MemberID UserName Email Password
1 User1 [email protected] 123456
2 User2 [email protected] 123456
3 User3 [email protected] 123456
4 User4 [email protected] 123456
5 User5 [email protected] 123456
信息表:
id fromid toid message is_read date
1 5 2 hello test 1 1 2012-08-24 01:00:00
2 2 5 hello test 2 1 2012-08-24 02:00:00
3 3 5 hello test 3 1 2012-08-24 03:00:00
4 4 5 hello test 4 1 2012-08-24 04:00:00
5 2 5 hello test 5 1 2012-08-25 05:00:00
和我的查询的输出中:
SELECT
`Mes`.`fromid`,
`Mes`.`is_read`,
`Mes`.`id` AS `mesid`,
`Mes`.`message`,
max(Mes.date) AS `date`,
`User`.`username`,
`User`.`MemberID` AS `Uid`
FROM `messages` AS `Mes`
INNER JOIN `users` AS `User` ON User.MemberID = Mes.fromid
WHERE (Mes.toid = 5 AND Mes.fromid <> 5)
GROUP BY `Mes`.`fromid`
ORDER BY `date` DESC
是:
如果你已经注意到,从日期排列是正确的,但最新的消息是不正确的。我想要这样的输出。
USERNAME MESSAGE DATE
user2 hello test 5 2012-08-25 05:00:00
user4 hello test 4 2012-08-25 04:00:00
user4 hello test 3 2012-08-25 03:00:00
相反,我要排序这是最新的消息的消息“2你好测试”的 “你好测试5”
任何一个可以帮助我的问题呢?
太谢谢你了...
你可能要考虑散列这些密码在用户表 – hdgarrood