U kunt dit bereiken met de MAX
groepsfunctie. Ik heb de query een beetje opgeschoond, maar in wezen zou dit dezelfde logica moeten behouden die je eerder had, terwijl het iets beter te optimaliseren was. Verander gewoon a.date_time voor wat het datum-tijdveld in je tabel ook is.
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;
Hiermee worden de records gerangschikt op de datum/tijd van het laatste bezoek en worden de laatste 12 geretourneerd.