【问题标题】:Postgresql: Why SET col = MAX(col2) doesn't workPostgresql:为什么 SET col = MAX(col2) 不起作用
【发布时间】:2021-07-19 14:08:47
【问题描述】:

我在 postgresql 中编写了一个代码,该代码在 select 语句中有效,但在更新语句中无效... 我不明白为什么它不起作用以及如何做。这是我的代码:

UPDATE netflix_tt_serie
SET total_num_parts = MAX(num_parts) OVER(PARTITION BY num_title) 

使用这些列:

num_title: 11 222 33333 444
num_parts: 12 123 12345 123

所以我想要的结果(也是我在 select 语句中得到的结果)应该是:

total_num_parts: 22 333 55555 333

(为了更清楚,我在这里更改了num_title时添加了空格)非常感谢您的帮助!

【问题讨论】:

  • 避免数据不一致,改为创建视图。
  • 目前还不清楚你的结果是如何从样本数据中计算出来的。

标签: sql postgresql set sql-update max


【解决方案1】:

您可以通过多种方式做到这一点。一个典型的方法是:

UPDATE netflix_tt_serie nts
    SET total_num_parts = max_num_parts
    FROM (SELECT num_title, MAX(num_parts) as max_num_parts
          FROM netflix_tt_serie
          GROUP BY num_title
         ) x
    WHERE x.num_title = nts.num_title;

您的语法不被允许,因为 SQL 通常不允许在 UPDATE 语句中使用聚合函数或窗口函数。

【讨论】:

  • 超级酷!非常感谢:D(我在我的问题上看到了你的“不清楚”标志,很抱歉这是我的第一篇文章)
  • @TristanTHOMAS。 . .这个问题本身似乎很清楚(这就是我提供答案的原因)。问题是样本数据不清楚,我无法弄清楚它应该是什么意思。
  • 好的,知道了!如果我再发一个会更清楚:)
猜你喜欢
  • 2011-11-20
  • 2012-05-04
  • 2010-12-03
  • 2014-10-23
  • 1970-01-01
  • 2021-09-05
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多