当 c表为空值时可以执行语句不报错,一旦插入数据就会报错,请问是数据的问题么,
update INTERNET_LINE a
set a.rate =
(select c.zh_name
from temp_reol c, GROUPSERVICE b
where c.xin_id = b.product
and b.id = a.product and b.stateflag=0)
where stateflag = 0
and exists (select 1
from temp_reol c, GROUPSERVICE b
where c.xin_id = b.product
and b.id = a.product and b.stateflag=0)
单行子查询返回多个行
在另一张相同格式的表中执行语句可以正常进行更新,到了这张表就不可以
这个问题是子查询中因为笛卡尔积造成单个sql但是出了多个值的情况。举例:a表字段有id和name,b表有id和name,a表数据(1,张三)(2,李四),b表数据(1,张三)(1,王五),c表字段相同,有数据(1,没有名字)。结果要把ab两表id相同的姓名更新插入到c表同id的名字中,返回结果因为有(1,张三)(1,王五)出现笛卡尔积,不知道是拿张三这个名字还是王五,出现报错。