postgresql - 如何在 postgis 上使用子查询作为几何参数?

标签 postgresql subquery postgis

我需要在 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/

相关文章:

postgresql - 简单的 PostGIS XYZ 设置?

sql - 带排除项的 PostgreSQL 唯一约束

MySQL 使用子查询删除行

mysql - SQL AVG 和 SUM GROUP BY

mysql - 选择具有 2 种排序类型的记录

postgresql - osm2pgrouting - 解析数据格式不正确(无效 token )

postgresql - 在 Rails 中使用多态模型连接数据库 View

sql - Teradata 到 Postgres : SQL translation for SET table, 没有回退,在日志之前没有,在日志之后没有?

postgresql - ALTER ROLE WITH CREATEDB 和 GRANT CREATE ON TABLESPACE 之间的区别

postgresql - 搜索表中任何记录的 X 距离内的所有记录