Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postgres-两个查询的减法_Postgresql_Postgis - Fatal编程技术网

Postgresql Postgres-两个查询的减法

Postgresql Postgres-两个查询的减法,postgresql,postgis,Postgresql,Postgis,我想做一个这样的减法: SELECT (SELECT ST_Y(ST_Centroid(ST_Collect(column1))) AS distance_km FROM table1) - (SELECT ST_Y(ST_Transform(column1,4326)) AS distance_km FROM table1) AS Difference 但是ST_Y(ST_形心(ST_Collect(column1)))只有一行,而ST_Y(ST_

我想做一个这样的减法:

SELECT 
    (SELECT ST_Y(ST_Centroid(ST_Collect(column1))) AS distance_km 
     FROM table1) - 
    (SELECT ST_Y(ST_Transform(column1,4326)) AS distance_km 
     FROM table1) AS Difference
但是
ST_Y(ST_形心(ST_Collect(column1)))
只有一行,而
ST_Y(ST_变换(column14326))
有多行。我想用列减去多行,然后查看每一行的结果。通过这个查询,我得到:

错误:用作表达式的子查询返回多行


有什么帮助吗?

以下查询将一行结果集与多行结果集合并,并允许对它们进行比较

SELECT
    a.*,
    b.*,
    a.distance_km - b.distance_kn    AS difference
FROM
(
    SELECT  ST_Y(ST_Centroid(ST_Collect(column1))) AS distance_km FROM table1
)
    a
CROSS JOIN
(
    SELECT ST_Y(ST_Transform(column1,4326)) AS distance_km FROM table1
)
    b

请举例说明。您是否建议,如果第一次查询的结果为
10
,第二次查询的结果为
{1,2,5,7}
,则希望得到
{9,8,5,3}
?与
SELECT(SELECT 1 UNION SELECT 2)相同。你不能用SQL来做这件事@MikeT-“你”不能使用Op使用的语法,对吗。但是,根据Op的实际功能需求,SQL很可能能够用正确的语法完全填充它。@MatBailie是的,就是这样@PRV-子查询和交叉连接是ANSI-SQL。所以,是的,它在PostGreSQL中起作用。@MatBailie:这个名字要么拼写为PostGreSQL,要么就是Postgres。千万不要用大写字母G