【问题标题】:how can update table in with case by postgresql如何通过 postgresql 更新表
【发布时间】:2020-08-04 08:53:26
【问题描述】:

我已在 SQL-Server 中成功运行。如下所示。

With cte As
(
    SELECT FolderNo,Sort,
    ROW_NUMBER() OVER (ORDER BY COALESCE(Sort,0) ASC, DateModified ASC) AS RN
    FROM MyTable where ParentNo = 1 AND IsDeleted = false
)
--select * from cte
UPDATE cte SET Sort=RN;

但是在 postgresql 中它给了我一个错误

关系“cte”不存在

如何在 postgresql 中做到这一点?

【问题讨论】:

    标签: postgresql sql-update common-table-expression


    【解决方案1】:

    您无法在 Postgres 中更新 CTE 的结果。您需要加入查询:

    update mytable
      set sort = t.rn
    from (  
        SELECT FolderNo,
               ROW_NUMBER() OVER (ORDER BY sort nulls first ASC, DateModified ASC) AS RN
        FROM MyTable 
        where ParentNo = 1 
          AND IsDeleted = false
    ) t
    where t.folderno = mytable.folderno      
    

    这假定folderno 是表的主键(或至少是唯一的)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-07
      • 2011-07-17
      • 2017-01-13
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      相关资源
      最近更新 更多