Mysql
 sql >> Database >  >> RDS >> Mysql

raggruppa per e ordina per nella query mysql

Puoi ottenerlo usando il MAX funzione di gruppo. Ho ripulito un po 'la query, ma fondamentalmente questo dovrebbe mantenere la stessa logica che avevi prima pur essendo leggermente più ottimizzabile. Basta cambiare a.date_time per qualunque sia il campo della data e dell'ora nella tabella.

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;

Questo ordinerà i record in base alla data/ora dell'ultima visita e restituirà gli ultimi 12.