mysql - 亨德尔返回多个值

标签 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)的情况下。我希望它适用于所有记录。任何可以执行此操作的程序代码

当我尝试执行程序时,出现错误

Subquery returned more than 1 value.

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

最佳答案

为此,您需要在同一 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

关于mysql - 亨德尔返回多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453374/

相关文章:

使用子查询更新 MySQL

sql - 调试具有双子查询、单子(monad)查询和所有内连接语句的查询之间的性能差异(和问题)

mysql - phpmyadmin SQL查询多个表

php - 使用选项卡和 Accordion 显示结果

php - MySQL如何防止主键重复

python - 拆分后与 Python 的缩进不一致

mysql - 在不使用 Union 的情况下组合两个查询

mysql - 在不同数据库上组合两个子选择而无需引用

SQL 查询帮助 : Returning distinct values from Count subquery

sql - from 子句中的子查询如何工作?