Subquery returns more than 1 row

 eg:

	
				SELECT  taxpayer_flag,org_num 
				from b org
				where org.taxpayer_flag != (
SELECT taxpayer_flag 
from a info 
where org.org_num = info.org_num 
);

在a表中存在冗余数据,就是在where条件的对应关系中存在一对多的关系,

解决方式:

1.可以使用 limit 或者从业务插入中去除1对多的数据影响

2.在where子查询中对应关系中的数据换成数据1对1 的

3.优化子查询sql使得查询出来的结果只有1条,符合逻辑

eg:

	SELECT  taxpayer_flag,org_num 
				from s org
				where org.taxpayer_flag != (
				SELECT taxpayer_flag 
				from b info 
				where org.org_num = info.org_num 
				ORDER BY id desc 
				limit 1 );

posted @ 2022-12-07 18:36  diligently  阅读(53)  评论(0)    收藏  举报