以下是一个批量处理update的语句
update xh_2 v set v.pk_psndoc = (select b.pk_psndoc from bd_psndoc b,xh_2 v where b.psncode=v.psncode);
把v表中的人员主键替换为b表中的人员主键,二者通过人员编码唯一性匹配,但是在执行该语句时报: 单行子查询返回多行!
请问各位该语句该怎么写?
update xh_2 v set v.pk_psndoc = (select b.pk_psndoc from bd_psndoc b,xh_2 v where b.psncode=v.psncode);
把v表中的人员主键替换为b表中的人员主键,二者通过人员编码唯一性匹配,但是在执行该语句时报: 单行子查询返回多行!
请问各位该语句该怎么写?
改为
where b.psncode=v.psncode and rownum<2
如果右边的查询返回的值不一定相同,建议根据业务逻辑再增加约束条件,使得右边的查询返回相同的值。。
另外一张表V表是一个考勤表,该表中的考勤记录通过人员主键、人员编码、人员姓名跟人员信息表b可以关联上。
我现在想通过人员编号‘psncode’字段的唯一性,将V表中的人员的人员主键全部都替换成b表中对应人员的人员主键。
所以使用到了这样一个语句:
update xh_2 v set v.pk_psndoc = (select b.pk_psndoc from bd_psndoc b,xh_2 v where b.psncode=v.psncode);
这是一个批量操作,批量处理的过程,但是在执行时报 :单个子查询返回多个行! 无法实现想要的结果!恳求各位高手的指点!?
PS:CSDN上问问题都要有分才有人理会的吗?