Большое спасибо Хуану за помощь, вот список шагов, которые я сделал для реализации:
, чтобы добавить столбцы
ALTER TABLE tableA
ADD COLUMN geom
geometry(Geometry,4326);
ALTER TABLE tableB
ADD COLUMN geom
geometry(Geometry,4326);
Затем отредактировать столбец geom в таблице A, то же самоедля таблицы B:
update tableA set geom=ST_SetSRID(ST_Point(lon, lat),4326)::geometry;
Затем, чтобы получить соответствующий идентификатор_блока
with cte as (
SELECT A.id, A.lat, A.lon, B.latitude, B.longitude, B.city, A.geom, B.geom, B.block_id,
ST_Distance(A.geom::geography, B.geom::geography) as dist
FROM tableA as A
CROSS JOIN tableB as B
WHERE ST_Distance(A.geom::geography, B.geom::geography) < 50000 -- for 50kms
) update tableA set block_id=cte.block_id from cte as cte where tableA.id=cte.id;
Но я не могу добавить дополнительную логику в приведенном выше запросе: если совпадают 2 идентификатора_блока, я хочувыберите ближайший к блоку идентификатор.
Еще раз спасибо, Судип