update dd_tz set mbz=(select max(mbz) from dd_tz as aa where aa.rq=dd_tz.rq and aa.dm=dd_tz.dm) where rq='200506'

解决方案 »

  1.   

    --1.
    update dd_tz set mbz=(select max(mbz) from dd_tz as aa where aa.rq='200505' and aa.dm=dd_tz.dm) where rq='200506'--2.
    update aa set aa.mbz=bb.mbz 
    from dd_tz as aa,dd_tz bb
    where bb.rq='200505' and aa.rq='200506'
      and aa.dm=bb.dm--估计你的 bm+rq不是唯一的.
      

  2.   

    完整的代码帖出来.应该不是这里的问题. 如果你是用sql server,那么你原来的写法,只有第一种方法,当rq+dm不唯一的时候才会出错,否则不会出错.
      

  3.   

    select dm,mbz from dd_tz  where rq='200505'查询看看有多少条数据??
      

  4.   

    就这一句话。数据库中的相关字段,6月的数据(5月也一样),谢谢你邹建
    mbz       dm        rq
    .00 010010 200506
    .00 010020 200506
    .00 010030 200506
    .00 010040 200506
    .00 010050 200506
    .00 010060 200506
    .00 010070 200506
    .00 010080 200506
    .00 010090 200506
    .00 010100 200506
    .00 020010 200506
    .00 020020 200506
    .00 020030 200506
    .00 020040 200506
    .00 020050 200506
    .00 020060 200506
    .00 020070 200506
    167.00 040010 200506
    163.00 040020 200506
    160.00 040030 200506
    1.15 040040 200506
    .00 040050 200506
    .00 040060 200506
    15.15 040080 200506
    14.20 040090 200506
    3.87 040100 200506
    3.53 040110 200506
    1.18 040120 200506
    1.10 040130 200506
    .73 040140 200506
    .00 050101 200506
    .00 050102 200506
    .00 050103 200506
    .00 050104 200506
    .00 050105 200506
    .00 050106 200506
    .00 050201 200506
    .00 050202 200506
    .00 050203 200506
    .00 050204 200506
    .00 050205 200506
    .00 050206 200506
    .00 050301 200506
    .00 050302 200506
    .00 050303 200506
    .00 050304 200506
    .00 050305 200506
    .00 050306 200506
    35.00 040070 2005067月的数据
    mbz        dm       rq
    .00 010010 200507
    .00 010020 200507
    .00 010030 200507
    .00 010040 200507
    .00 010050 200507
    .00 010060 200507
    .00 010070 200507
    .00 010080 200507
    .00 010090 200507
    .00 010100 200507
    .00 020010 200507
    .00 020020 200507
    .00 020030 200507
    .00 020040 200507
    .00 020050 200507
    .00 020060 200507
    .00 020070 200507
    .00 040010 200507
    .00 040020 200507
    .00 040030 200507
    .00 040040 200507
    .00 040050 200507
    .00 040060 200507
    .00 040080 200507
    .00 040090 200507
    .00 040100 200507
    .00 040110 200507
    .00 040120 200507
    .00 040130 200507
    .00 040140 200507
    .00 050101 200507
    .00 050102 200507
    .00 050103 200507
    .00 050104 200507
    .00 050105 200507
    .00 050106 200507
    .00 050201 200507
    .00 050202 200507
    .00 050203 200507
    .00 050204 200507
    .00 050205 200507
    .00 050206 200507
    .00 050301 200507
    .00 050302 200507
    .00 050303 200507
    .00 050304 200507
    .00 050305 200507
    .00 050306 200507
    .00 040070 200507
      

  5.   

    那试试这个看。update A set mbz=(select mbz from dd_tz where rq='200505' and dm=A.dm) from dd_tz A where rq='200506'
      

  6.   

    谢谢各位了,找找原因了,是因为这个表上有一个update的触发器,把触发器关了就能运行了,请问为什么开着触发器不让批量修改。
      

  7.   

    那就怪了,你这样看看执行这两句,看看记录的条数是不是一样的。select dm,mbz from dd_tz  where rq='200505'select Distinct dm,mbz from dd_tz  where rq='200505'
      

  8.   

    回复人: ayukowa(很爱"丫头") ( ) 信誉:100  2005-06-03 11:53:00  得分: 0  
     
     
       谢谢各位了,找找原因了,是因为这个表上有一个update的触发器,把触发器关了就能运行了,请问为什么开着触发器不让批量修改。  
     
    -----------------------------------------
    那说明你的触发器写的有问题,检查一下。