亨德尔不止一个值返回

时间:2015-05-26 08:28:42

标签: mysql subquery

Update company set comp_wholesale=(select comp_wholesale from company    
                                    where comp_companyID=100 and comp_isparent='Y' ) 
where comp_parentcompany=1200

我需要执行此操作并更新所有工作正常但但我怎么能用整个表格来表示我没有明确定义ID(1200和100)。我希望它适用于所有记录。任何可以执行此操作的程序代码

当我尝试程序时,我收到错误

  

子查询返回的值超过1。

当子查询跟随时,这是不允许的,但为了使其与通用表一起使用,它必须返回多个值。如何做到这一点?

1 个答案:

答案 0 :(得分:0)

为此,您需要在同一SQL中两次引用表company。使用别名(在本例中我选择了c1c2),以便查询优化器知道您指的是哪一个:

Update company c1 
inner join company c2 
   on c2.comp_companyID=c1.comp_parentcompany 
set c1.comp_wholesale=c2.comp_wholesale 
where c1.comp_parentcompany is not null

这将更新所有拥有父母的公司。

http://sqlfiddle.com/#!9/d7b89/1