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.