Если количество точек не слишком велико (я бы сказал, меньше тысячи), один простой способ выполнить этот запрос - предоставить одну строку с описанием WKT набора точек:
select *
from UserProfile
where id_ in (
select distinct userid
from locations
where ST_DWITHIN(ST_GeogPoint(longitude, latitude),
ST_GeogFromText("MULTIPOINT((10.9765 50.4322), (10 50))"),
300)
)
Строка WKT должна быть легко встроена в ваш код.
Если число интересных точек больше, я бы пошел с таблицей точек и сделал бы JOIN между таблицами локаций и таблицей интересных точек:
select *
from UserProfile
where id_ in (
select distinct userid
from locations as l, interesting_points as p
where ST_DWITHIN(ST_GeogPoint(l.longitude, l.latitude),
p.point,
300)
)