MySQL反向GROUP BY结果

时间:2012-09-16 08:15:53

标签: mysql

我不擅长Mysql表达式,所以这里有一个简单的问题,我正试图解决这个问题。我想颠倒 GROUP BY 表达式的顺序,以便我可以获得用户的最后一个条目。

我设法在互联网上找到了很好的例子,但我没有收到错误就无法用我的表达来实现它们。多谢你们!

SELECT messages.conv, messages.from_user, messages.to_user,
        messages.content, messages.date_posted, messages.note_read,
        messages.active, users.thumb, users.name, users.id
FROM `messages` 
INNER JOIN `users` 
    ON messages.from_user = users.id 
WHERE messages.from_user = 1 
    OR messages.to_user = 1 
GROUP BY messages.conv 
ORDER BY date_posted ASC

1 个答案:

答案 0 :(得分:4)

编辑:我显然误解了你的要求,你的当前查询将返回一个伪随机行,因为你的GROUP BY没有任何聚合,你想要的是每个对话的最后一行,这更像是(假设messagesusers一样,有一个名为id的自动增量主键;

SELECT messages.conv, messages.from_user, messages.to_user,
       messages.content, messages.date_posted, 
       messages.note_read, messages.active, users.thumb, 
       users.name, users.id FROM  `messages` 
INNER JOIN  `users` 
       ON messages.from_user = users.id 
WHERE messages.id IN
      (SELECT MAX(id) FROM messages 
       WHERE messages.from_user = 1 OR messages.to_user = 1 
       GROUP BY conv);

SQLFiddle here

相关问题