首页 > 解决方案 > SQL - 计算变量更新值的总和

问题描述

我是 SQL 新手,遇到以下问题。
我想总结到达我的设备的错误总数。

所以,假设我有内部my_table变量名称SeqErrTotalSeqErr.
我将它们初始化0并验证了它,但是当我执行以下操作时:

  UPDATE my_table
  SET
  ...
    SeqErr         =      COALESCE(SeqErr, 0) + 1,
    TotalSeqErr    =      SeqErr,
  ...

我看到当我检索此表时,它带有以下值:
SeqErr = 1TotalSeqErr = 0(即已SeqErr更新但TotalSeqErr使用旧SeqErr值而不是更新值)。

我该如何解决这个问题?
注意:这里可能有与我类似的问题,但我找不到。

标签: sqlpostgresqlsum

解决方案


如果您希望TotalSeqErr使用“新” SeqErr,您可以像更新一样更新它SeqErr

...
SeqErr         =      COALESCE(SeqErr, 0) + 1,
TotalSeqErr    =      COALESCE(SeqErr, 0) + 1,
...

您可以想象更新是一次完成的,而不是一行一行的。因此,等号右侧的内容指的是旧值,即使您将它们设置为上面一行的新值。


推荐阅读