ORA-00934: 尝试使用 UPDATE 时,此处不允许使用组功能

Posted

技术标签:

【中文标题】ORA-00934: 尝试使用 UPDATE 时,此处不允许使用组功能【英文标题】:ORA-00934: group function is not allowed here when trying to use UPDATE 【发布时间】:2020-01-08 13:54:01 【问题描述】:

我已经在 Oracle APEX 中编写了这段代码:

UPDATE employee SET total_cost = (SUM(c.price) 
FROM course c, schooling s
WHERE 
s.id_employee_schooling = id_employee AND s.id_course_schooling = c.id_course);

它告诉我

此处不允许使用群组功能。

我发现我不能同时使用sumWHERE,但我不知道如何以其他方式编写此代码。有什么解决办法吗?谢谢。

【问题讨论】:

【参考方案1】:

看起来您只是忘记了子查询中的 SELECT 关键字。

UPDATE employee
       SET total_cost = (SELECT sum(c.price)
                                FROM course c
                                     INNER JOIN schooling s
                                                ON s.id_course_schooling = c.id_course
                                WHERE s.id_employee_schooling = id_employee);

我还将您的隐式连接更改为显式连接以提高可读性。

但看起来你将要做的事情根本不应该做。 total_cost 似乎存储了可能导致不一致的冗余数据。所以物理列total_cost 应该完全删除。当您在查询员工时需要该值时,可以通过连接或子查询从其他表中获取该值。这样,价值观总是正确的。您还可以创建一个视图以使其更方便。

【讨论】:

以上是关于ORA-00934: 尝试使用 UPDATE 时,此处不允许使用组功能的主要内容,如果未能解决你的问题,请参考以下文章

此处不允许使用群组功能

where语句中不能直接使用聚合函数

当我尝试使用 FOR UPDATE NOWAIT 时,MariaDB 抛出错误

尝试在 SQL 中运行 UPDATE 语句时“必须声明标量变量”

当我尝试在设备上安装已编译的 .apk 时,INSTALL_FAILED_UPDATE_INCOMPATIBLE

Cognito 用户池:admin-update-user-attributes:尝试更新默认属性时出错:“email”