2012-01-10 48 views
1

我正在尝试为独特user_id获取最新创建的日期时间。我有下面的查询,但它似乎并没有工作....它没有得到最新创建的时间。MySQL最新唯一用户聊天工作不正常

SELECT * FROM `chats` 
WHERE receiver_id = 1 
GROUP BY user_id 
ORDER BY created DESC 

是否有原因?

UPDATE:

其实我发现我的答案我自己。请看下面。我必须使用INNER JOIN来嵌套搜索和过滤结果表,然后使用该结果的where子句,然后在该表上留下加入以获得我需要的数据!

SELECT c.*, users.username 
FROM chats c 
INNER JOIN( 
SELECT MAX(created) AS Date, user_id, receiver_id, chat, type, id 
FROM chats 
WHERE receiver_id = 1 
GROUP BY user_id) cc ON cc.Date = c.created AND cc.user_id = c.user_id 
LEFT JOIN users ON users.id = c.user_id 
WHERE c.receiver_id = 1 
+0

您可能想在此处发布您的表格结构。 – 2012-01-10 00:24:20

+0

你能给我们提供关于你的问题的更多信息吗?例如,聊天表的结构如何,以及该表中的一些示例数据。 – Diego 2012-01-10 00:30:51

回答

0

您应该使用MAX聚合函数 -

SELECT user_id, MAX(created) latest_datetime FROM chats 
GROUP BY user_id; 

尝试此查询,它会显示所有用户和最新创建的日期时间。

+0

不幸的是,没有工作......谢谢反正。 – 2012-01-10 12:40:48

+0

只有当您需要显示分组和汇总字段时,此功能才有效。否则,当显示其他字段时,您应该使用群组式查询 - 就像您在问题中写的一样。 – Devart 2012-01-10 13:06:49