一、情况说明
执行以下语句:
update corp_stockholder_info a set a.STOCKHOLDER_NAME =(select CORP_NAME from corp_info c where c.CORP_KEY=a.STOCKHOLDER_CORP_KEY)
出现1242 Subquery returns more than 1 row报错
二、报错说明
在MySQL中遇到了子查询返回多行的错误。
当子查询返回多行,但SQL语句只期望一行时,就会发生此错误。
select CORP_NAME from corp_info c where c.CORP_KEY=a.STOCKHOLDER_CORP_KEY
查出一个CORP_KEY对应多个CORP_NAME
三、报错解决
方法1. select CORP_KEY,count(*) from corp_info group by CORP_KEY having count(CORP_KEY)>1;
以上sql语句查出哪个CORP_KEY对应多个CORP_NAME,手动修改好。
方法2.使用聚合函数,如MAX()或MIN(),实现从子查询返回单个值。