UPDATE STOCKVALUE A
SET A.LOCATION=(SELECT B.LOCID FROM DCCUMINVBASIC B WHERE A.MAPNAME='invdc4')
错误:ORA-01427:单行子查询返回多行
答案 0 :(得分:0)
在此查询中
(SELECT B.LOCID FROM DCCUMINVBASIC B WHERE A.MAPNAME='invdc4')
你在桌子B上,而你正试图在桌子A上创造条件。这没有任何意义。
您的查询应如下所示:
(SELECT B.LOCID FROM DCCUMINVBASIC B WHERE B.XXXX='yyyyy')
它应该返回一个值(1行和1列结果)。
答案 1 :(得分:0)
在这种情况下,最好通过提供多个结果来了解哪些行导致问题。 要了解导致问题的行,您应首先创建一个select语句,如:
SELECT (SELECT COUNT(*) FROM DCCUMINVBASIC B WHERE A.MAPNAME='invdc4') CNT FROM STOCKVALUE A;
在这种情况下,检查count大于1的行,并在继续update语句之前先修复select。
答案 2 :(得分:0)
尝试执行此查询(也使用DISTINCT
):
SELECT B.LOCID FROM DCCUMINVBASIC B WHERE A.MAPNAME='invdc4'
你会看到错误是什么。
答案 3 :(得分:-1)
错误代码抱怨的是查询
从DCCUMINVBASIC B中选择B.LOCID A.MAPNAME =' invdc4'
返回多行,因此外部查询无法执行,因为它需要单个值。