繁体   English   中英

从另一个表中更新计数

[英]update count from a table in another

如果这听起来像一个愚蠢的问题,我是 postgres 的新手所以很抱歉

我在 postgresql 中有一个名为 t1 的多边形 shp,带有这样的字段

id  |  area  |  grid_id
1   |  10    |  01_01
2   |  100   |  01_02
3   |  1000  |  01_03
4   |  10    |  01_01

我想用我可以制作的某个独特的“grid_id”来计算 poligons

SELECT COUNT (*) from public.t1 group by grid_id

现在我想用与每个唯一 grid_id 对应的多边形数量更新字段“nr_polig”中的另一个表 t2

id  |  name  |  nr_polig
1   |  01_01 |  
2   |  01_02 |  
3   |  01_03 |  
4   |  01_04 |  

我试过了

Update public.t2 set nr_polig = (
    SELECT COUNT(*)  from public.t1 group by grid_id where public.grid_id = grid_id
)

但它更新多边形的总数

稍后_编辑

它是这样工作的

UPDATE public.t2 
  set nr_polig = (SELECT COUNT (*) from public.t1 where public.t1.grid_id = public.t2.name)

您可以加入表:

UPDATE public.t2
SET nr_polig = s.cnt
FROM (SELECT grid_id, count(*) AS cnt
      FROM public.t1
      GROUP BY grid_id) AS s
WHERE s.grid_id = t2.grid_id;

您需要通过在列名前面加上它所属的表来正确关联子查询。 此外,子查询中不需要group by子句。

update t2 set nr_polig = (
    select count(*)  
    from t1
    where t1.grid_id = t2.name
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM