update a  
set a.usdl_level= max(gdrule_id) 
from t_userde a,t_graderule b 
where a.usdl_experience>=b.gdrule_experience但是这样的话:聚合不应出现在 UPDATE 语句的集合列表中。
应该怎么写才对?

解决方案 »

  1.   

    update a 
    set a.usdl_level= max(gdrule_id) 
    from t_userde a,(select gdrule_experience , max(gdrule_id) from b group by gdrule_experience) t 
    where a.usdl_experience = t.gdrule_experience 
      

  2.   

    update @tb set id=(select max(id) from @tb where ....)
      

  3.   

    update a 
    set a.usdl_level= t.gdrule_id
    from t_userde a,(select gdrule_experience , gdrule_id = max(gdrule_id) from b group by gdrule_experience) t 
    where a.usdl_experience = t.gdrule_experience 上面那个写错了.
      

  4.   

    update   a     
    set   a.usdl_level=   max(gdrule_id)   
    from   t_userde   a,t_graderule   b   
    where   a.usdl_experience> =b.gdrule_experience 但是这样的话:聚合不应出现在   UPDATE   语句的集合列表中。 
    应该怎么写才对?
    不能用这个方法直接 update ,具体要看你的表,以及两个表数据见的关系,你吧表结构贴出来看看
      

  5.   

    update   a
    set   asdl_level=  (elect max(gdrule_id)  
    from   t_userde   a,t_graderule   b  where   a.usdl_experience> =b.gdrule_experience )
      

  6.   

    都不行啊,不过到是给了我启发,修改后的语句如下:
    update a  
    set a.usdl_level= gdrule_id 
    from t_userdetail a,
    (select c.usdl_id usdl_id,max(d.gdrule_id) gdrule_id 
    from sodachofo.t_userdetail c,bbs.t_graderule d 
    where c.usdl_experience>=(d.gdrule_experience)
    group by c.usdl_id) b
    where a.usdl_id=b.usdl_id