我是靠谱客的博主 老迟到柠檬,最近开发中收集的这篇文章主要介绍删除前10行sql oracle,sql server 如何实现删除前1000行数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

如果是oracle数据库管理软件,实现起来相对简单多了delete  from 表名  where rownum<=1000;那sql server数据库管理软件呢?

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

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

7c869fba8526b851d60f24c5dcf2a3a3.png

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 表名) tt where tt.num<=10

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

(各位朋友如果通过嵌套有办法处理,请公众号回复下哈)最后想到创建视图来处理,先按排序创建视图,语句如下:

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

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

52635e8242498e0c34899e0d7b32f7ff.png

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

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

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

小结:1、oracle的rownum它是插入数据记录排序,而sql server是通过列排序,建议使用前确认是否可以通过创建时间或发生时间排序,以免误删除数据;2、通过删除表格前10行数据方法,加深对视图的了解,对视图的修改,会直接影响基表数据;3、处理问题时,也不一定非要一条语句得到结果,可以通过创建视图或临时表处理,可能效果会更好,也不容易影响查询性能。

最后

以上就是老迟到柠檬为你收集整理的删除前10行sql oracle,sql server 如何实现删除前1000行数据的全部内容,希望文章能够帮你解决删除前10行sql oracle,sql server 如何实现删除前1000行数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部