2012-06-20 39 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)

或者它也可以用做:)