sql >> Databasteknik >  >> RDS >> Mysql

mySQL Group efter medlemsnamn

Jag tror att det är detta du är ute efter.

SELECT messages.* 
  FROM 
  (SELECT MAX(lastseen) AS lastseen,IF ('Tom' = `from`,`to`,`from`) as otheruser FROM messages
    WHERE 'Tom' IN (`from`,`to`) GROUP BY otheruser
   )
AS latest INNER JOIN messages ON latest.lastseen = messages.lastseen
                             AND (('Tom' = messages.from AND latest.otheruser = messages.to)
                                 OR
                                 ('Tom' = messages.to AND latest.otheruser = messages.from))
ORDER BY messages.lastseen
DESC,`read`='no' limit 10

ersätt bara 'Tom' med din variabel

Detta kommer att returnera de senaste 10 användarna som skickat ett meddelande till "Tom" eller "Tom" som skickat ett meddelande till.




  1. Försök att öppna ett redan stängt objekt sqlitedatabase

  2. MySQL-dödsprocessen är att användaren inte har tillräckligt med poäng PHP

  3. Finns det ett annat sätt att implementera det här programmet utan att använda kapslad while-loop?

  4. Beräkna en löpande summa i SQL Server