2014-07-26 17 views
0

我很难应用其他人对这个问题的答案,所以我决定只是在这里发布,看看你们中的任何一个人能帮助我。我试图让人们从一个数据库传递消息,其中字段是一个独特的名单:PHP MySQL独特的列,但使用最新的行

ID,发件人,收件人,时间戳,消息

问题是,我想用最,显示了独特的名单最近消息用户第一,但MySQL似乎在使其独特的过程中选择最早添加的行。你能帮我扭转这种情况吗?这是我目前使用的查询。

SELECT DISTINCT recipient, sender FROM chat WHERE recipient = '$username' OR sender = '$username' ORDER BY timestamp DESC limit 50 

非常感谢!

+0

尝试使用'GROUP BY发件人'或'GROUP BY timestamp'或任何列。 –

回答

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