Mysql
 sql >> Base de données >  >> RDS >> Mysql

grouper par et trier par dans la requête mysql

Vous pouvez y parvenir en utilisant le MAX fonction de groupe. J'ai un peu nettoyé la requête, mais fondamentalement, cela devrait conserver la même logique que vous aviez auparavant tout en étant légèrement plus optimisable. Modifiez simplement a.date_time pour le champ date-heure de votre table.

SELECT
    a.visitorid,
    MAX( a.date_time ) AS last_visit_date_time,
    b.onlinestatus,
    b.username,
    b.age,

FROM tbl_visitprofile a

INNER JOIN tbl_user b
    ON b.id = a.visitorid
    AND b.STATUS != '2'

LEFT JOIN tbl_pauseusers p
    ON p.user_id = a.visitorid

WHERE a.visitmemberid = '10'
    AND a.blockstatus = '0'
    AND p.user_id IS NULL

GROUP BY a.visitorid
ORDER BY last_visit_date_time DESC
LIMIT 0 , 12;

Cela triera les enregistrements par date/heure de dernière visite et renverra les 12 derniers.