我需要在 postgis 上比较一些空间数据,但我需要与另一个表“card_history”中的非几何数据进行比较,其中包含使用“ST_GeomFromText”函数所需的纬度和经度字段。 但是我如何在单个查询中完成呢? 由于我正在使用 php(女巫不相关),因此进行大量查询会非常痛苦...
我正在尝试这样的事情:
SELECT ST_Distance_Sphere
(ST_GeomFromText('POINT(
(SELECT DISTINCT ON (userid) long from card_history)
(SELECT DISTINCT ON (userid) lat from card_history))',4326),
ST_GeomFromText('POINT(17.0712215 48.15825)',4326)
)
但是子查询似乎不能作为“POINT”的参数。 请帮忙
最佳答案
试试这个
WITH
lon AS (
SELECT DISTINCT ON (userid) AS long from card_history
),
lat AS (
SELECT DISTINCT ON (userid) AS lat from card_history
)
SELECT ST_Distance_Sphere(ST_GeomFromText(
'POINT(' || lon.lon || ' ' || lat.lat || ',4326'),
ST_GeomFromText('POINT(17.0712215 48.15825)',4326))
FROM lon, lat;
关于postgresql - 如何在 postgis 上使用子查询作为几何参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850187/