SQL 删除指定范围内的记录,如第10条到第100条,如果是用where id>10 and id<100的那就算了,这种情况只适用于id是连续的,我想实现的是删除表中从第10条记录到第100条记录之间的数据,也就是说90条数据会被清除,而且清除的数据的id可能会大于100
delete from 表A where id in (
select top 90 id from (
select top 100 id from 表A order by id asc) order by id desc);
思路就是 先按照ID 升序查出前100条
然后按照ID降序,查出前90条
最后把这90条记录删除掉
delete from test where id in (select a.id from (select id from test limit 9,90) as a)
如果是sql server 2005以后的版本,建议用row_number,这样可以简化sql语句,
delete from table where id in ( select a.id from (select id, row_number() over(PARTITION by field1 order by field2 desc) as num from table ) a where a.rownum between 10 and 100)