2012-06-20 35 views
0

不是总我有一个表可以在max函数

CREATE TABLE `messages` (`uid` BIGINT NOT NULL , 
`mid` BIGINT , `date` BIGINT NOT NULL , PRIMARY KEY (`mid`)); 

我要选择最大(日)通过UID分组,即每一个UID(读取用户),我想找到最新的消息(与THA最大日期)

试过这种

select messages.mid, max(messages.date), messages.uid, messages.body 
            from messages 
          where messages.chat_id is NULL 
            group by messages.uid 

但查询工作是错误的。

回答

3

子查询可以给你,以便检索最新的消息为每个用户所需要的时间:

SELECT messages.uid, messages.mid, messages.date, messages.body 
FROM messages 
WHERE messages.chat_id IS NULL 
AND messages.date IN 
(SELECT MAX(m2.date) FROM messages m2 
    WHERE m2.uid = messages.uid AND m2.chat_id IS NULL 
) 
; 
+0

感谢ü如此多的 '具有' 条款

完成!你已经救了我的一天! –

1

ü需要由集团所有字段,而使用聚合函数:)使用子查询将排序解决问题。

SELECT messages.date,messages.uid,messages.mid,messages.body 从那里messages.chat_id IS NULL消息 AND IN messages.date(SELECT MAX(msg.date)FROM消息MSG WHERE消息.chat_id IS NULL和msg.uid = messages.uid)

或者它也可以用做:)