方法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)

posted on 2010-04-08 15:48  信封牛  阅读(229)  评论(0编辑  收藏  举报