sql >> Base de Datos >  >> RDS >> Mysql

agrupar por y ordenar por en consulta mysql

Puedes lograr esto usando el MAX función de grupo. He limpiado un poco la consulta, pero fundamentalmente esto debería conservar la misma lógica que tenía antes y, al mismo tiempo, ser un poco más optimizable. Simplemente cambie a.date_time por cualquier campo de fecha y hora en su tabla.

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;

Esto ordenará los registros por fecha/hora de la última visita y devolverá los últimos 12.