if   exists(select   *   from   sysobjects   where   id=object_id('newmail')   and   type='u'   )   
  drop table newmailselect mid,count(*) as counts into newmail from mail_event_2007_04  group by mid
update mail_2007_04 set mail_2007_04.counts=mail_2007_04.counts+newmail.counts from mail_2007_04,newmail where mail_2007_04.mid=newmail.mid 
drop table newmail怎么能改成不用中间表newmail 直接用子查询把东西update到mail_2007_04 中?

解决方案 »

  1.   

    把 newmail 临时表做成视图然后,只要这么一句就可以了:update mail_2007_04
    set mail_2007_04.counts=mail_2007_04.counts+newmail.counts 
    from mail_2007_04,newmail 
    where mail_2007_04.mid=newmail.mid========================================这样,结构上比较清晰。
      

  2.   

    create view newmail
    as
    select mid,count(*) as counts from mail_event_2007_04  group by mid
    update mail_2007_04
    set mail_2007_04.counts=mail_2007_04.counts+newmail.counts 
    from mail_2007_04,newmail 
    where mail_2007_04.mid=newmail.mid
    我认为用子查询不建立中间过程是可以做下来的,,不过写不出来,有高人也可以指点下