Możesz to osiągnąć za pomocą MAX
funkcja grupy. Trochę uporządkowałem zapytanie, ale zasadniczo powinno to zachować tę samą logikę, którą miałeś wcześniej, jednocześnie będąc nieco bardziej zoptymalizowanym. Po prostu zmień a.date_time na dowolne pole daty i godziny w Twojej tabeli.
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;
Spowoduje to uporządkowanie zapisów według daty/godziny ostatniej wizyty i zwrócenie ostatnich 12.