Postgresql 错误:“组”处或附近出现语法错误

Postgresql 错误:“组”处或附近出现语法错误,postgresql,postgis,Postgresql,Postgis,您好,我正在编写一个sql查询,但我在GROUPBY的行中遇到语法错误。可能有什么问题,请帮忙 UPDATE intersection_points i SET nbr_victimes = sum(tue+bl+bg) FROM accident_ma a ,intersection_points i WHERE (ST_DWithin(i.st_intersection,a.geom_acc, 10000) group by st_intersection)) ; G

您好,我正在编写一个sql查询,但我在GROUPBY的行中遇到语法错误。可能有什么问题,请帮忙

UPDATE intersection_points i
  SET nbr_victimes = sum(tue+bl+bg)
    FROM accident_ma a ,intersection_points i 
    WHERE (ST_DWithin(i.st_intersection,a.geom_acc, 10000) group by st_intersection)) ;
GROUPBY是它自己的子句,它不是WHERE子句的一部分

这就是你所拥有的:

WHERE (
    ST_DWithin(i.st_intersection,a.geom_acc, 10000)
    group by st_intersection
)
这就是您需要的:

WHERE ST_DWithin(i.st_intersection,a.geom_acc, 10000)
group by st_intersection
编辑:作为对评论的回应,听起来你的加入比更新要复杂一些。。。从语法上来说,这是必要的。请查看备注部分:

当存在FROM子句时,实际上发生的是将目标表连接到FROM_列表中提到的表,并且连接的每个输出行表示目标表的更新操作。使用FROM时,应确保联接为要修改的每一行最多生成一个输出行。换句话说,目标行不应连接到其他表中的多个行。如果这样做,那么只有一个连接行将用于更新目标行,但使用哪一个连接行并不容易预测。 由于这种不确定性,仅在子选择中引用其他表更安全,尽管通常比使用联接更难读取和更慢

通常,这需要将语法更改为:

UDPATE SomeTable
SET SomeColumn = 'Some Value'
WHERE AnotherColumn = 
  (SELECT AnotherColumn
   FROM AnotherTable
   -- etc.)

然而,在这个查询中使用ST_DWithin可能会使这一点复杂化。如果不深入了解表结构、关系和此次更新的总体意图,我可能就无法提供更多帮助。基本上,您需要为数据库明确哪些记录需要更新以及如何更新,这可能涉及以某种方式将查询更改为后一个子选择语法。

我不理解您的数据结构。我根据您的查询创建以下表。请检查表结构

如果表的结构是这样的

您的查询必须是

UPDATE intersection_points SET nbr_victimes = (SELECT SUM(a.tue+a.bl+a.bg) FROM accident_ma a WHERE st_dwithin(st_intersection, a.geom_acc, 1000));

去掉where子句和group by语句周围的括号。Phylogeneèse这样它无法编译“更新交叉点i SET nbr_victimes=sumtue+bl+bg FROM CONCENT_ma a,交叉点i where ST_DWithini.ST_交叉点,a.geom_acc,10000 group by ST_交叉点;”不要尝试它,它无法发送结果最后一个错误“更新交叉点我设置的交叉点nbr\u victimes=sumtue+bl+bg来自事故现场,交叉点i,其中ST\u DWithini.ST\u交叉点,a.geom\u acc,ST\u交叉点10000组;”它还发送此错误“错误:第5组线处或附近的语法错误:按st_交叉点分组;”我正在尝试此“更新交叉点我设置的交叉点nbr\U victimes=从事故a、交叉点i中选择sumtue+bl+bg,其中ST\u DWithini.ST\u交叉点,a.geom\u acc,10000 group by stèu Crossion“it say”错误:子查询返回的多行用作表达式*********错误*********错误:子查询返回的多行用作表达式SQL state:21000'@malyon:听起来连接不像更新中的FROM语法那样干净。请看这里的注释部分:你能纠正你的代码吗?我不明白。你能修改我的代码吗?请我找不到结果