postgresql - 在表达式中使用同一表中的两个不同行

标签 postgresql postgis

我正在使用 PostgreSQL + PostGIS。

在表中,我在同一个表的同一列中的不同行中有一个点和线几何图形。要获取我运行的行:

SELECT the_geom
FROM filedata
WHERE id=3

如果我想拿点我跑:

SELECT the_geom
FROM filedata
WHERE id=4

我想把点和线放在一起,就像它们在这个 WITH 表达式中显示的那样,但是改为对表使用真正的查询:

WITH data AS (
SELECT 'LINESTRING (50 40, 40 60, 50 90, 30 140)'::geometry AS road,
       'POINT (60 110)'::geometry AS poi)

SELECT ST_AsText(
ST_Line_Interpolate_Point(road, ST_Line_Locate_Point(road, poi))) AS projected_poi

FROM data;

在此示例中,您会看到数据来自手动创建的 WITH 表达式。我想从我的 filedata 表中获取它。我的问题是我不知道如何同时处理来自一个表的两个不同行的数据。

最佳答案

一种可能的方式:
从不同行检索另一个值的子查询。

SELECT ST_AsText(
          ST_Line_Interpolate_Point(
             the_geom
            ,ST_Line_Locate_Point(
                the_geom
               ,(SELECT the_geom FROM filedata WHERE id = 4)
             )
          )
       ) AS projected_poi
FROM   filedata
WHERE  id = 3;

关于postgresql - 在表达式中使用同一表中的两个不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12890851/

相关文章:

database - Postgresql 中有问题的无名表

c# - 来自 C# 的 PostgreSQL 参数化查询中的解析错误,但在 pgAdmin III 中有效

java - 如何将 HEXEWKB 转换为纬度、经度(在 Java 中)?

postgresql - 对 PostgreSQL 数据库的耗时查询是重复的

Postgis/Elixir Geo。定位结果正确。但经度正在改变

database - 我应该使用什么 DBMS 将 openstreetmap 存储为图形?

postgresql - 使用 NetTopologySuite 与 EF Core 和 postgis 计算两点之间的地理距离

SQL 性能 : LIKE vs IN

postgresql - 在 Postgres 8.4.2 中 make check 无法启动

hibernate - 为 UUID 配置 Grails/Hibernate/Postgres