近日,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()函数
语句如下:
select ROW