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);
它告诉我
此处不允许使用群组功能。
我发现我不能同时使用sum
和WHERE
,但我不知道如何以其他方式编写此代码。有什么解决办法吗?谢谢。
【问题讨论】:
【参考方案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 时,此处不允许使用组功能的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试使用 FOR UPDATE NOWAIT 时,MariaDB 抛出错误
尝试在 SQL 中运行 UPDATE 语句时“必须声明标量变量”
当我尝试在设备上安装已编译的 .apk 时,INSTALL_FAILED_UPDATE_INCOMPATIBLE
Cognito 用户池:admin-update-user-attributes:尝试更新默认属性时出错:“email”