【问题标题】:update count from a table in another从另一个表中更新计数
【发布时间】:2019-12-17 11:15:46
【问题描述】:

如果这听起来像一个愚蠢的问题,我是 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

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

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)

【问题讨论】:

    标签: sql postgresql group-by count sql-update


    【解决方案1】:

    您可以加入表格:

    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;
    

    【讨论】:

      【解决方案2】:

      您需要正确地关联子查询,方法是在列名前加上它所属的表。子查询中也不需要group by 子句。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-15
        • 1970-01-01
        • 2018-07-01
        • 1970-01-01
        相关资源
        最近更新 更多