Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

agrupar por e ordenar por na consulta mysql


Você pode conseguir isso usando o MAX função de grupo. Eu limpei a consulta um pouco, mas fundamentalmente isso deve manter a mesma lógica que você tinha antes, sendo um pouco mais otimizável. Basta alterar a.date_time para qualquer que seja o campo de data e hora em sua tabela.
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;

Isso ordenará os registros pela data/hora da última visita e retornará os últimos 12.