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

作者:老丁 时间:2024-01-18 14:47:39 

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

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


delete  from 表名  where rownum<=1000;

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

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

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

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


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 表名

输出结果如下:

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

如上图,既然有序号排序了,那直接删除前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

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

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

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


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

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

小结:

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

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

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

来源:https://mp.weixin.qq.com/s/9_AYS7Hl9LLNlCX1fWlSxQ

标签:sqlserver,删除,数据
0
投稿

猜你喜欢

  • MySQL sql_mode修改不生效的原因及解决

    2024-01-25 03:32:48
  • Python网络安全格式字符串漏洞任意地址覆盖大数字详解

    2021-11-20 16:43:29
  • python通过定义一个类实例作为ftp回调方法

    2021-08-16 14:12:03
  • 实例讲解SQL Server加密功能

    2024-01-24 04:05:15
  • Django组件content-type使用方法详解

    2023-10-01 13:54:42
  • Python中文件的写入读取以及附加文字方法

    2021-03-03 12:05:15
  • JavaScript面试必考之实现手写Promise

    2024-04-16 10:38:49
  • asp检测表单输入EMAIL合法性的函数

    2007-10-16 13:39:00
  • 点选TOP后并不是直接跳到页顶的,而是滚动上去

    2023-09-07 02:36:43
  • 多个jquery.datatable共存,checkbox全选异常的快速解决方法

    2024-05-11 09:18:50
  • 深入了解NumPy 高级索引

    2023-07-02 05:22:51
  • 微信小程序实现页面跳转传递参数(实体,对象)

    2023-08-09 06:30:20
  • AspJpeg组件:介绍、注册、高级使用方法

    2010-01-25 12:42:00
  • SQL Server 数据库索引其索引的小技巧

    2012-07-11 15:55:02
  • PyTorch训练LSTM时loss.backward()报错的解决方案

    2022-01-10 00:04:09
  • Go语言map元素的删除和清空

    2024-02-05 10:42:25
  • Python+Tkinter制作在线个性签名工具

    2023-12-25 15:21:23
  • 解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题

    2022-10-24 05:34:54
  • MySQL存储过程中的sql_mode问题

    2011-01-04 19:50:00
  • 分享我们的select控件设计过程

    2009-06-16 18:04:00
  • asp之家 网络编程 m.aspxhome.com