Toho lze dosáhnout pomocí MAX
skupinová funkce. Dotaz jsem trochu vyčistil, ale v zásadě by si to mělo zachovat stejnou logiku, jakou jste měli předtím, a zároveň být o něco lépe optimalizovatelný. Jednoduše změňte a.date_time za jakékoli pole data a času ve vaší tabulce.
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;
Tím se záznamy seřadí podle data/času poslední návštěvy a vrátí se nejpozději 12.