delete from 表名 where rownum<=1000;
sql server里没有rownum功能,小编尝试用select top
先查询看下结果集,select * from 表名;

delete from 表名where 条码in (select top 10 条码 from 表名)
--注释:由于数据量有限,测试删除前10行数据
如果这样处理会出问题,为什么呢?如果条件是in ,那只能是删除前10条记录里面的条码范围,这样会造成误删除表中所有的该条码记录,所以此方法行不通。
那能不能类似像oracle那样排序呢?sql server 用row_number()函数
语句如下:
select ROW_NUMBER() over (order by 日期) as num ,* from 表名
输出结果如下:

如上图,既然有序号排序了,那直接删除前10行数据
delete from(select ROW_NUMBER() over(order by 日期) as num ,* from 表名) ttwhere tt.num<=10
结果是失望的,delete from 不能直接嵌套子查询
create view 视图名1asselect ROW_NUMBER() over (order by 日期) as num ,* from 表名go
查询视图,输出结果集如下 :

通过视图删除前10行数据,语句如下:
delete from 视图名1 where num <=10;
删除表格前1000行,把条件改成小于等于1000即可
一起认识数据库
SQL Server2014安装图文详解
Mysql安装图文详解!手把手教会您从下载到安装成功

文章转载自SQL数据库入门学习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




