方法1:
with temp as
( select row_number() over(order by cityID) as rownum,cityName from city )
select * from temp where rownum between 10 and 20
go
解释:
1 此方法把括号里的查询结果放到变量:temp 里面( 我也不确定是不是变量), 并用row_number() 函数进行一个行号跟踪, 再用over 函数进行一个列的排序规则( 是这必须的), 并指定列名为'rownum'
2 紧接着在下面的语句可以对 'rownum' 进行一个指定行号的查询
3 此批语句执行完毕后, 变量:temp 释放
方法2:
select identity(int,1,1) as rownum, cityName into #temp from city
select * from #temp where rownum between 10 and 20
go
解释:
此方法跟上面的差不多的意思, 只不过把 row_number() 函数换成了 identity() 函数
并把结果集放在一个临时表里面, 当批语句执行完毕, 此临时表还可以使用
SQL Server 如何重新恢复自动编号列的序号
在sql server中经常有这样的问题:
一个表采用了自动编号的列之后,由于测试了好多数据,自动编号已累计了上万个。现在正是要用这个表了,测试数据已经删了,遗留下来的问题 就是 在录入新的数据,编号只会继续增加,已使用过的但已删除的编号就不能用了, 谁知道如何解决此问题?
truncate命令不但会清除所有的数据,还会将IDENTITY的SEED的值恢复到原是值。
而DBCC CHECKIDENT则更加方便一些,可以在不删除数据的情况下指定SEED的值。
1. truncate table tablename
2. DBCC CHECKIDENT (tablename,reseed,1)