sql server删除前1000行数据的方法实例_MsSql

来源:脚本之家  责任编辑:小易  

近日,sql数据库入门学习群有朋友问到,利用sql如何删除表格的前1000行数据,是否可以实现?

如果是oracle数据库管理软件,实现起来相对简单多了

delete  from 表名  where rownum<=1000;

那sql server数据库管理软件呢?

sql server里没有rownum功能,小编尝试用select top

先查询看下结果集,select * from 表名;

delete from 表名 
where 条码 
in (select top 10 条码 from 表名)

--注释:由于数据量有限,测试删除前10行数据

如果这样处理会出问题,为什么呢?如果条件是in ,那只能是删除前10条记录里面的条码范围,这样会造成误删除表中所有的该条码记录,所以此方法行不通。

那能不能类似像oracle那样排序呢?sql server 用row_number()函数

row_number()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号

必须和over一起使用

语法如下:

select *,ROW_NUMBER() over(order by productid) as num from product_test;

语句如下:

select  ROW_NUMBER() over (order by 日期) as num  ,* from 表名

输出结果如下:

如上图,既然有序号排序了,那直接删除前10行数据

delete from
 (select  ROW_NUMBER() over
 (order by 日期) as num  ,* from 表名) tt 
where tt.num<=10

结果是失望的,delete from 不能直接嵌套子查询

(各位朋友如果通过嵌套有办法处理,请公众号回复下哈)

最后想到创建视图来处理,先按排序创建视图,语句如下:

create view 视图名1 
as
select  ROW_NUMBER() over (order by 日期) as num  ,*  from 表名
go

查询视图,输出结果集如下 :

通过视图删除前10行数据,语句如下:

delete from 视图名1 where num <=10;

删除表格前1000行,把条件改成小于等于1000即可

小结:

1、oracle的rownum它是插入数据记录排序,而sql server是通过列排序,建议使用前确认是否可以通过创建时间或发生时间排序,以免误删除数据;

2、通过删除表格前10行数据方法,加深对视图的了解,对视图的修改,会直接影响基表数据;

3、处理问题时,也不一定非要一条语句得到结果,可以通过创建视图或临时表处理,可能效果会更好,也不容易影响查询性能。

总结

到此这篇关于sql server删除前1000行数据的文章就介绍到这了,更多相关sqlserver删除前1000行数据内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:教你几种在SQLServer中删除重复数据方法如何强制删除或恢复SQLServer正在使用的数据库删除sqlserver数据库日志和没有日志的数据库恢复办法如何在SQLSERVER中快速有条件删除海量数据SQLserver删除某数据库中所有表实现思路在 SQLSERVER 中快速有条件删除海量数据

  • 本文相关:
  • mssql case,group by用法
  • sqlserver给表增加多个字段的语法
  • 一次性压缩sqlserver2005中所有库日志的存储过程
  • 在 sqlserver 中快速有条件删除海量数据
  • sql删除语句drop、truncate、 delete 的区别
  • 数据结构简明备忘录 线性表
  • microsoft search 服务无法启动 解决办法.
  • sqlserver中求两个字符串的交集
  • sql server 2012 身份验证(authentication)
  • sql server数据复制到的access两步走
  • 怎么删除SQL server数据库
  • SQLserver删不干净
  • SQLserver删除上月1号前的数据 并且将每天的最后一条数据插...
  • 怎么在sql server 中删除某一列
  • sql server 删除主键
  • SQLserver2000如何删除数据
  • SQL Server2000 增删改查语句
  • sql server高手请进,如何删除数据库里几天前的记录
  • SQL SERVER 2008怎么设置自动删除三天前的数据?
  • sql server 2005怎么自动定时删除3天前的备份文件?
  • SQL SERVER 删除后怎么才能删干净?
  • sql server 2008怎么删除一列
  • 数据库sql server2005删除语句
  • 如何删除Microsoft sql server desktop engine
  • sql server中如何删除聚集索引
  • sqlserver删除一条记录后如何实现后面的自动往前排序
  • 如何利用SQL. SERVER删除某字段的前面几位数字。 表A,字段...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页教你几种在sqlserver中删除重复数据方法如何强制删除或恢复sqlserver正在使用的数据库删除sqlserver数据库日志和没有日志的数据库恢复办法如何在sqlserver中快速有条件删除海量数据sqlserver删除某数据库中所有表实现思路在 sqlserver 中快速有条件删除海量数据mssql case,group by用法sqlserver给表增加多个字段的语法一次性压缩sqlserver2005中所有库日志的存储过程在 sqlserver 中快速有条件删除海量数据sql删除语句drop、truncate、 delete 的区别数据结构简明备忘录 线性表microsoft search 服务无法启动 解决办法.sqlserver中求两个字符串的交集sql server 2012 身份验证(authentication)sql server数据复制到的access两步走sql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据win7系统安装sqlserver2000的详细sql重复记录查询的几种方法sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些sql查询某列指定长度的字符串多余的用省略得到自增列的下一个会插入的idsql function 创建函数实例介绍sql server控制语句的基本应用sqlserver中得到执行计划的两种方式sqlserver2017共享功能目录路径不可改的解exec(execute)函数访问inserted或deletedsql server 服务器优化技巧浅谈sqlserver中遍历字符串的sql语句文本、excel、access数据导入sql server2
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved