0

我有一个查询

 SELECT   m1.mid mid, m1.uid uid, m1.date, m1.body body
 FROM messages  m1
 WHERE m1.chat_id IS NULL  
   and deleted = 0  
   AND m1.date in    
    ( 
       SELECT MAX(m2.date) 
       FROM messages m2   
       WHERE m2.uid = m1.uid 
         AND m2.chat_id IS NULL 
         and m2.deleted = 0  
    )

这个查询实际上不是我写的,我在这里得到了帮助- 非常感谢他们。

但我有一个问题。当有多条具有相同日期和 uid(来自同一用户)值的消息时,我会得到两条或多条具有相同日期和 uid 的记录,但我只想有一条(不管是哪个,或者中 fe 最大的消息)

我尝试使用 distinct(uid) 没有成功结果。有没有其他方法可以达到我想要的结果?

4

2 回答 2

1

您可以使用此解决方案来查找最近的消息uid

SELECT b.*
FROM
(
    SELECT MAX(mid) AS maxmid
    FROM messages
    WHERE chat_id IS NULL
    GROUP BY uid
) a
INNER JOIN messages b ON a.maxmid = b.mid
于 2012-07-07T05:03:47.813 回答
0

相反,您可以添加一个额外的列“计数”并显示同一天来自用户的消息数量!

通过这个你可以避免,得到重复的记录!

于 2012-07-07T04:58:27.430 回答