阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

sql server如何删除前1000行数据

110次阅读
没有评论

共计 1010 个字符,预计需要花费 3 分钟才能阅读完成。

导读 近日有朋友问到, 利用 sql 如何删除表格的前 1000 行数据, 是否可以实现? 所以下面这篇文章主要给大家介绍了关于 sql server 删除前 1000 行数据的相关资料, 需要的朋友可以参考下

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

delete from 表名 where rownum
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() 函数
语句如下:
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
结果是失望的,delete from 不能直接嵌套子查询
(各位朋友如果通过嵌套有办法处理,请公众号回复下哈)
最后想到创建视图来处理,先按排序创建视图,语句如下:
create view 视图名 1
as
select ROW_NUMBER() over (order by 日期) as num ,* from 表名
go
查询视图,输出结果集如下:
通过视图删除前 10 行数据,语句如下:
delete from 视图名 1 where num
删除表格前 1000 行,把条件改成小于等于 1000 即可
小结:
1、oracle 的 rownum 它是插入数据记录排序,而 sql server 是通过列排序,建议使用前确认是否可以通过创建时间或发生时间排序,以免误删除数据;
2、通过删除表格前 10 行数据方法,加深对视图的了解,对视图的修改,会直接影响基表数据;
3、处理问题时,也不一定非要一条语句得到结果,可以通过创建视图或临时表处理,可能效果会更好,也不容易影响查询性能。
阿里云 22G 服务器 3M 带宽 611 年,有高配
腾讯云新客低至 82/ 年,老客户 99/
代金券:在阿里云专用满减优惠券
正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1010字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中