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