2016-09-15 75 views
-1

我正在使用此查询来获取哪些消息的用户或用户的消息传递给谁的列表。mySQL群组(仅显示1个成员一次)

SELECT messages.* 
FROM (
    SELECT MAX(lastseen) AS lastseen 
    FROM messages 
    WHERE '".$user."' IN (from,to) 
    GROUP BY IF ('".$user."' = from,to,from) 
) AS latest 
LEFT JOIN messages 
USING(lastseen) 
ORDER BY lastseen desc,(read='no' and to='".$user."') limit 10 

这个工作,但是,它显示了一些用户两次。

enter image description here

什么是显示用户只有一次正确的方法是什么?

回答

1

使用distinct

SELECT DISTINCT messages.* 
FROM (
    SELECT MAX(lastseen) AS lastseen 
    FROM messages 
    WHERE '".$user."' IN (from,to) 
    GROUP BY IF ('".$user."' = from,to,from) 
) AS latest 
LEFT JOIN messages 
USING(lastseen) 
ORDER BY lastseen desc,(read='no' and to='".$user."') limit 10