update COLORS
set COLORS.AR = 'RED'
where COLORS.GCRS = 'FIRST'
and (case when max(NEWAPP."AGE") > 60
and count(NEWAPP."AGE") > 0)
我得到一个错误,指出“组的功能在这里不允许”更新是根据是否存在另一个表的记录,是表> 60
有谁知道我能做些什么来防止这种错误?
标题非常说,我可以关于目标的一切。
update COLORS
set COLORS.AR = 'RED'
where COLORS.GCRS = 'FIRST'
and (case when max(NEWAPP."AGE") > 60
and count(NEWAPP."AGE") > 0)
我得到一个错误,指出“组的功能在这里不允许”更新是根据是否存在另一个表的记录,是表> 60
有谁知道我能做些什么来防止这种错误?
标题非常说,我可以关于目标的一切。
如果真的有表
UPDATE colors
SET colors.ar = 'RED'
WHERE colors.gcrs = 'FIRST'
AND EXISTS(SELECT 1
FROM newapp
WHERE age > 60)
这将是非常不寻常的,但是,在一个适当的数据模型有一个情况下,你想要做一个不相关的子查询像这样没有任何关系。通常情况下,会有一些列将colors
表与newapp
表相关联,并且您需要在该关系的EXISTS
子查询中添加一个谓词。
这很有效,谢谢。我知道我正在使用的桌子很糟糕。部分原因是我实际上首先编写此查询。我得到“组函数”错误,因为我试图在同一个where子句中同时使用count和max吗? – Deprecated
@ user1821973-你得到'ORA-00934'是因为你有一个聚合函数作为不允许的谓词。但即使没有这种情况,由于'boolean'在SQL中不是一个有效的数据类型(假设这是一个错误,因为你的'CASE'语句格式错误(没有'then','else'或'end'),你会收到一个错误你希望'case'语句返回一个布尔值),并且因为你试图引用一个你没有从中选择的表(除了已更正的表的名称的问题)。 –
'NEWAPP',我想是另一张桌子。 “NEWAPP”表和“AR”表之间是否存在某种关系?或者你真的只关心'NEWAPP'表中有'AGE'大于60的行吗?通常情况下,您需要进行某种连接,以确定是否在'NEWAPP'中存在与'AR'行相关的行,并且具有特定的值。 –
我真正关心的是NEWAPP中是否有任何记录。“AGE”的值超过60 – Deprecated
好的。 'colors.ar'是表的名字吗?还是表格中的一列?你使用它作为两者(你正在更新名为'colors.ar'的表格并设置一个名为'colors.ar'的列)。这是不可能的 - 任何一个或其他必须是不正确的。 –