子查询返回了多个值。这是不允许的,当子查询遵循=,!=,<, <= , >,> =

问题描述:

我尝试更新表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) 

请帮助如已陷在这几个小时了。

+0

什么数据库系统,您使用的?在任何情况下,您的子查询都被用于将单个值应用于CVT_FACTOR,但能够实现多个值返回,因此这不是一个好的设计。你应该使用实际的UPDATE/JOIN方法而不是子查询赋值,但是不知道数据库引擎,我们不能建议那个语法是什么...... – jleach

如果您只是运行子查询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