sql - ORA-00934: 尝试使用 UPDATE 时,此处不允许使用组功能
问题描述
我在 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
andWHERE
但我不知道如何以另一种方式编写此代码。有什么解决办法吗?谢谢你。
解决方案
看起来您只是忘记了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
应该完全删除物理列。当您在查询员工时需要该值时,可以通过连接或子查询从其他表中获取该值。这样,价值观总是正确的。您还可以创建一个视图以使其更方便。
推荐阅读
- python - 如何在python中获取> 4GB .gz文件的未压缩大小
- python - 由正则表达式替换的文件中的文本。如何将更改写入文件?
- sql-server - 如何在where子句SQL中对随机行列求和
- spring - 将 Spring 引导安全上下文传播到使用 @KafkaListener 注释的 bean 中
- python - 为什么这个简单的函数不输出任何东西?
- arrays - Rust,元组向量的类型定义
- javascript - 使用 js 延迟函数时使用 ISSET 验证表单
- rust - 为 dyn 对象实现特征时的神秘生命周期问题
- java - 在作为 Windows 服务运行的 Java 程序中生成键盘输出
- python - 在 ParaView Python 中访问映射的标量(实际颜色)