我有一个表D_DATE
,其中有YYYYMMDD
列,其值为V_TILL
(我对日期格式不感兴趣)。我碰巧还有另一个表B,其中有一个列名D_DATE
。现在,我想用表A
中的UPDATE TAB_A t1
SET (V_TILL) = (SELECT TO_DATE(t2.D_DATE,'YYYYMMDD')
FROM B t2
WHERE t1.BR_CODE = t2.BR_CODE
AND t1.BK_CODE = t2.BK_CODE||t2.BR_CODE)
WHERE EXISTS (
SELECT 1
FROM TAB_B t2
WHERE t1.BR_CODE = t2.BR_CODE
AND t1.BK_CODE = t2.BK_CODE||t2.BR_CODE)
列的值更新表B的V_TILL列值,该值恰好也有重复项。意思是,内部查询可以从我形成查询的位置返回多个记录来更新表。
我目前已经编写了这个查询,但它会抛出错误:
ORA-01427:单行子查询返回多行
BK_CODE
PS:BK_CODE
是BR_CODE
和import React from 'react';
import ReactDOM from 'react-dom';
import './App.css';
class Toogle extends React.Component {
constructor(props) {
super(props);
//step 1
this.handleClick = this.handleClick.bind(this);
this.startTimer=this.startTimer.bind(this)
}
handleClick() {
console.log('Button is clicked');
// clearTimeout(timeoutTimer);
startTimer() {
var timeoutTimer = setTimeout(function() {
window.location.href = '#/security/logout';
}.bind(this), 1000);
}
}
render() {
return (<div onMouseMove={this.handleClick}>Move the cursor over me</div>);
}
}
ReactDOM.render(
<Toogle />,
document.getElementById('root')
);
请帮助我,因为我陷入了这个泥潭!任何帮助将不胜感激。
答案 0 :(得分:2)
如果子查询返回许多您想要使用的值?
如果有的话可以使用rownum&lt; = 1; 如果您知道只有一个值使用distinct
SET (V_TILL) = (SELECT TO_DATE(t2.D_DATE,'YYYYMMDD')
FROM B t2
WHERE t1.BR_CODE = t2.BR_CODE
AND t1.BK_CODE = t2.BK_CODE||t2.BR_CODE AND ROWNUM <=1)
或
SET (V_TILL) = (SELECT DISTINCT TO_DATE(t2.D_DATE,'YYYYMMDD')
FROM B t2
WHERE t1.BR_CODE = t2.BR_CODE
AND t1.BK_CODE = t2.BK_CODE||t2.BR_CODE)
以上是解决方法。要做到正确,你必须分析为什么你得到多个价值。也许需要更复杂的逻辑来选择正确的值。
答案 1 :(得分:0)
我使用了这个命令:
MERGE INTO TAB_A A
USING TAB_B B
ON (A.BK_CODE = B.BK_CODE || B.BR_CODE
AND A.BR_CODE = B.BR_CODE AND B.BR_DISP_TYPE <> '0'
AND ((B.BK_CODE, B.BR_SUFFIX) IN (SELECT BK_CODE,
MIN(BR_SUFFIX)
FROM TAB_B
GROUP BY BK_CODE)))
正如许多人之前提到的那样,我错过了一个额外的条件并使其正常工作,否则上述技术的效果非常好。
感谢大家!