子查询返回了多个值。这是不允许的,当子查询遵循=,!=,<, <= , >,> =
问题描述:
我尝试更新表A列从表B中选择数据。但是,我按照上面所述打错误消息“子查询返回多个值。当子查询遵循=
,!=
,<
,<=
,>
,>=
或子查询用作表达式时,这是不允许的。子查询返回了多个值。这是不允许的,当子查询遵循=,!=,<, <= , >,> =
下面请找到我的代码:
UPDATE TABLE_A
SET CVT_FACTOR = (SELECT a.CVT_FACTOR
FROM TABLE_A a JOIN TABLE_B b ON a.PROD_CODE = b.PROD_CODE)
请帮助如已陷在这几个小时了。
答
如果您只是运行子查询SELECT a.CVT_FACTOR FROM TABLE_A a JOIN TABLE_B b ON a.PROD_CODE = b.PROD_CODE
您会发现它返回多行。当您使用它来更新值时,不允许这样做。
你可能想要做的是:
UPDATE TABLE_A SET CVT_FACTOR = (
SELECT TABLE_B.CVT_FACTOR FROM TABLE_B
WHERE TABLE_B.PROD_CODE = TABLE_A.PROD_CODE
)
+0
实际上我找出查询。最后,我用的是 UPDATE TABLE_A SET CVT_FACTOR = A.CVT_FACTOR FROM表-B乙JOIN TABLE_A A ON A.PROD_CODE = B.PROD_CODE 感谢,它的实际工作。 – user2256904
什么数据库系统,您使用的?在任何情况下,您的子查询都被用于将单个值应用于CVT_FACTOR,但能够实现多个值返回,因此这不是一个好的设计。你应该使用实际的UPDATE/JOIN方法而不是子查询赋值,但是不知道数据库引擎,我们不能建议那个语法是什么...... – jleach