1/delete a from (select id,name,num=(row_num()over(partition by id,name order by id)) from ta ) a
where a.num<>12/delete a from ta a
where exists(select 1 from ta b where a.name=b.name and a.id<b.id)

解决方案 »

  1.   


    一条语句很难搞定,因为mssql里面没有rowid 
      

  2.   

    对应rowid,SQLSERVER里面有row_number()
      

  3.   

    [Quote=引用 1 楼 ojuju10 的回复:]1/ delete a from (select id,name,num=(row_num()over(partition by id,name order by id)) from ta ) a 
    where a.num <>1 好象不行
    消息 195,级别 15,状态 10,第 24 行
    'row_num' 不是可以识别的 内置函数名称。
      

  4.   

    可以了
    应该是ROW_NUMBER()
    谢谢
      

  5.   

    呵呵!按照你的说法.只要判断NAME相同就可以了
      

  6.   


    楼主,你用的是2000,只有2005才支持row_number()1/ delete a from (select id,name,num=(select count(1) from tb where a.id>=id) from ta a ) a 
    where a.num <>1