我有一个如下所示的update语句,可以正常工作,我在子查询中使用了with语句,以大大提高性能,但是由于某些原因,我不允许从同一表中添加其他列来进行更新。
作品:
UPDATE Table_A SET (Col_One) = (WITH OneValue AS (SELECT DISTINCT t.Col_One
FROM Table_Two t, Table_A a
WHERE t.id = a.New_Id))
SELECT Col_One FROM OneValue);
我想做的就是像这样添加另一个要从table_two更新的列
UPDATE Table_A SET (Col_One, Col_Two) = (WITH OneValue AS (SELECT DISTINCT t.Col_One, T.Col_two
FROM Table_Two t, Table_A a
WHERE t.id = a.New_Id))
SELECT Col_One, Col_Two FROM OneValue);
但是我得到ora-01767更新集表达式必须是子查询。我了解此错误,但看不到我是如何生成的。任何帮助是极大的赞赏。
提前致谢。
这似乎可行(无论如何,它还是使用DUAL进行了简单查询):
UPDATE Table_A SET (Col_One, Col_Two) = (select col_one, col_two from
(WITH OneValue AS (SELECT DISTINCT t.Col_One, T.Col_two
FROM Table_Two t, Table_A a
WHERE t.id = a.New_Id))
SELECT Col_One, Col_Two FROM OneValue)
);
至于为什么子查询以“ WITH”开头不能正常工作的原因,我只能想象是因为Oracle SQL的设计人员没有预料到这种用法。
我理解这是指当前对象。所以,与其使用 为什么我不能使用 请参考下面的例子,并在最后看到最后两个评论。
这是我在控制器中的验证代码: 我得到了这个错误: SQLSTATE[42S22]:找不到列: 1054未知列'id'in'where子句'(SQL:选择计数(*)作为聚合从其中=Giac translog and 我不使用作为主键
问题内容: 为什么在Java中不使用const关键字? 您能看到在Java语法中使用某些可传递const或不可变关键字的任何缺点,还是为什么选择了常见的繁琐方法? 您能看到关闭请求的 原因 ,Sun提供了任何解释吗? 问题答案: 您能看到关闭请求的原因吗,Sun是否提供任何解释? 是。Sun在请求本身中提供了三个为什么不对请求执行操作的原因。我引用: “目前尚无计划将此功能添加到Java中。除了蔓
与其他包管理器(如)相比,我发现当更新与给定项目相关的包时,有一种奇怪的行为。 还根据留档,和选项 根据composer.json将依赖项升级到最新版本,并更新composer.lock文件。 事实上,正确地更新了新的包版本号。但是没有被修改,并且列出了旧的版本过低的包。 为什么会发生这种情况?是我做错了什么,还是这就是应该怎么做的?如果是这样的话,为什么两个文件中的一个是最新的,而另一个不是最新
我看到这个问题,就想知道。 忽略了几乎所有语言都必须向后兼容的事实,有什么理由我们不能使用运算符作为关键字和函数,这取决于它是否紧跟括号?这会让语法更难吗? 我想的主要是python,但也像C语言。
问题内容: 什么时候不宜在方法签名上使用Java中的static关键字?如果方法基于某些参数执行功能,并且不需要访问非静态字段,那么您是否不总是希望这些类型的方法都是静态的? 问题答案: 您 可能 不希望它为静态的一个原因是允许它在子类中被覆盖。换句话说,行为可能不取决于对象内的数据,而是取决于对象的确切类型。例如,您可能具有常规的集合类型,其属性将在始终可变的集合,始终不可变的集合中返回,并依赖