2016-09-15 6 views
-1

Ich verwende diese Abfrage, um eine Liste abzurufen, wer einen Benutzer angemeldet hat oder an wen der Benutzer Nachrichten gesendet hat.mySQL-Gruppe (1 Mitglied nur einmal anzeigen)

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 

Dies funktioniert, jedoch zeigt es einige Benutzer zweimal.

enter image description here

Was ist der richtige Weg, nur einmal um einen Benutzer zu zeigen?

Antwort

1

Verwenden 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