我在应用其他人对这个问题的答案时遇到了很多麻烦,所以我决定在这里发帖,看看你们中是否有人可以帮助我。我正在尝试从数据库中获取消息的唯一人员列表,其中字段为:
id,发件人,收件人,时间戳,邮件
问题是我想首先显示最新消息用户的唯一列表,但MySQL似乎在使其唯一的过程中选择最早添加的行。你能帮我逆转吗?这是我目前使用的查询。
SELECT DISTINCT recipient, sender FROM chat WHERE recipient = '$username' OR sender = '$username' ORDER BY timestamp DESC limit 50
非常感谢你!
答案 0 :(得分:1)
Sadikhasan是正确的方式,但我认为你需要ORDER BY
才能GROUP BY
。另外,我希望得到一份独特的对话列表(发件人和收件人的独特组合),其中$username
是其中一个分享者。然后你必须这样做:
SELECT * FROM (
SELECT recipient,
sender
FROM chat
WHERE
recipient = '$username' OR
sender = '$username'
ORDER BY timestamp DESC LIMIT 50) AS tempTable
GROUP BY recipient, sender