现有一张表test,两列age,nameinsert into test values(11,'zhangsan') 将这条数据插入5次后,删除第一条,怎么做?没有标识列

解决方案 »

  1.   

    ;with tt
    as
    (select *,px=row_number()over(partition by age,name order by (getdate())) from tb)
    delete tt
    where px=1
      

  2.   


    create table test(id1 int,name1 varchar(20))----连续插入5条记录
    declare @i intset @i=0while @i<5
    begininsert into test values(11,'zhangsan')set @i=@i+1end----删除第一条记录set rowcount 1delete from testset rowcount 0
      

  3.   

    with t as
    (
    select row_number() over (order by age) as id,* from spt_values 
    )
    delete from t where id=1试一下这个!
      

  4.   

    with t as
    (
    select row_number() over (order by age) as id,* from test 
    )
    delete from t where id=1试一下这个!
      

  5.   


    意思就是生成一个自增的列PX,这个PX是按age,name 增量排序的,where px=1 就是删除第一列。能明白不?  实在看不懂的话;你就去搜 row_number() 的用法;就晓得了。
      

  6.   

    晕;说错了where px=1 是删除第一行
      

  7.   

    delete top (1) from test 
      

  8.   

    with cte
    as
    (
    select age,name,row=ROW_NUMBER() over(order by (select 1))
    from test
    )
    delete from cte
    where row=1
    go
      

  9.   

    写在触发器里,当count(1)>5时
    set rowcount 1
    delete t from t a left join inserted b on a.name=b.name and a.age=b.age
    set rowcount 0 
      

  10.   


    set rowcount 1
    delete from test
    set rowcount 0就这个了,昨天刚学到,跟LZ一起学习~!