[MSSQL]我想要搜尋第X筆~第X筆,關於指定筆數的搜尋

我想要搜尋第X筆~第X筆,關於指定筆數的搜尋

於我而言很困擾的一個問題,像MYSQL就有LIMIT 5,10 這樣的語法來支持搜尋第5筆到第10筆的資料。

 

MSSQL沒有這麼好康的事,為了這個,上網找了一推資料,但多半是先反排再取TOP這樣的方式,極耗效能阿!!!

 

最後,終於找到我的真愛- ROW_NUMBER() 函數,個人覺得這是拯救蒼生最快的函數之一了XD!

 

以下為範例,假設要搜尋product資料表中第5-11筆的資料 :

 


WITH product_list AS 
(SELECT *,ROW_NUMBER() OVER(ORDER BY num desc) AS new_num FROM product)
 SELECT * FROM product_list WHERE new_num BETWEEN 5 AND 11

 

 

以上做個筆記,如果各位大大有更好的寫法,麻煩跟小弟分享分享阿~

 

分享


站作網站設計工作室 SiteMak Studio
Shinyo Ho 
Founder / Developer
email:shinyo.her@gmail.com|web:www.sitemak.com.tw