Erp100论坛's Archiver

xiangzhao 发表于 2008-7-12 14:34

请帮忙看下批量更新的问题

上次我问题表达不清这次在开贴请教,想把A表中的A.XZYH全部用B表里的B.XZYH覆盖,如果A.xzyh为空就用b填充、如果A。xzyh不为空就覆盖。a.yhh和b.yhh都是一对一
yw_jbxx(a表 )             temp(b表)
yhh   yhzh               yhh   yhzh
001    a                 001    d
002                      002    e     
003    b                 003    f
004    c                 004    g
要求结果是(a表)成
yw_jbxx
yhh      yhzh
001        d
002        e
003        f
004        g

xiangzhao 发表于 2008-7-12 14:34

其实就是用b表的记录替换a表的记录
update yw_jbxx set yhzh=(select yhzh from temp where yw_jbxx.yhh=temp.yhh)

xiangzhao 发表于 2008-7-12 14:34

update yw_jbxx set yhzh=(select max(b.yhzh) from yw_jbxx a,temp b
                                                where a.yhh=b.yhh  
                                                 group by b.yhzh)

xiangzhao 发表于 2008-7-12 14:34

update yw_jbxx set yhzh=(select max(b.yhzh) from yw_jbxx a,temp b
                                                where a.yhh=b.yhh  
                                                 group by b.yhh)

xiangzhao 发表于 2008-7-12 14:35

我试了  还是提示单行子查询返回多于一个行。
如果单独运行select max(b.yhzh) from yw_jbxx a,temp b
                                                where a.yhh=b.yhh  
                                                 group by b.yhh;
可以过,返回很多值。

xiangzhao 发表于 2008-7-12 14:35

如果b表有重复记录一定要加max()才可以.
我的语句:
update yw_jbxx set yhzh=(select max(yhzh) from temp  
                                                where yw_jbxx.yhh=temp.yhh  
                                                 group by temp.yhh)

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2007 Comsenz Inc.