我有一个查询
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
)
这个查询实际上并不是我编写的,我得到了帮助here - 非常讨厌他们。
但我有一个问题。当有多个消息具有相同的日期和uid(来自相同的用户)值时,我得到两个或多个具有相同日期和uid的记录,但我想只有一个(无论哪个,或者中间最大的消息)
我尝试使用distinct(uid)但没有成功。有没有其他方法可以实现我想要的结果?
答案 0 :(得分: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
答案 1 :(得分:0)
相反,您可以添加额外的列“count”并在同一天显示来自用户的消息数量!!
通过这个你可以避免,获得重复的记录!