declare @n int
 set @n= (select top 1 cno from tb321 where cno < 10 order by newid())
 declare @strSql nvarchar(1000)
 set @strSql='delete  top ('+cast(@n as varchar) + ')cno,date,goods,cname,color long,size,quantity,price,year,range,season,category,brand from tb321 
output deleted.cno,deleted.date .... into othertable '
 exec(@strSql)
 ) 

解决方案 »

  1.   

    试试这个:
    --先建立一个表tb321_delete
    declare @n int
    set @n= (select top 1 cno from tb321 where cno < 10 order by newid())--没有用动态语句,直接用的查询
    ;with t
    as
    (
    select top (@n) cno,date,goods,cname,color long,size,quantity,price,year,range,season,category,brand 
    from tb321
    order by newid()  --随机获取数据
    )--删除随机数据,同时把结果保存到 tb321_delete
    delete t  
    output deleted.* into tb321_delete
      

  2.   


    你再试试这样行吗;
    --先建立一个表tb321_deleteselect identity(int,1,1) as id,*
           into tb321_delete
    from tb321
    where 1 <> 1declare @n int
    set @n= (select top 1 cno from tb321 where cno < 10 order by newid())--没有用动态语句,直接用的查询
    ;with t
    as
    (
    select top (@n) * 
    from tb321
    order by newid()  --随机获取数据
    )--删除随机数据,同时把结果保存到 tb321_delete
    delete t  
    output deleted.* into tb321_delete