在 SQL Server 實做分頁的 T-SQL 語法

在 SQL Server 中做分頁不像 MySQL 有 Limit 語法這麼方便,但以下這段語法可以快速的實做分頁的功能,雖然不是十分完美,不過也不失為一種解決方案!

[code:tsql]
SELECT
    TOP pagesize
    *
FROM
    articles
WHERE
    id NOT IN (
        SELECT
            TOP ( pagesize * pageindex )
            id
        FROM
            articles
        ORDER BY id DESC
    )
ORDER BY
    id DESC
[/code]

注意事項:

  1. pagesize: 每頁顯示幾筆
  2. pageindex: 第幾頁(第一頁的 pageindex 是 0 )
  3. 你自己可以決定 ORDER BY 排序的欄位,子查詢中的 ORDER BY 欄位必須要與主查詢的 ORDER BY 欄位一樣!

 

  

此文章由 will 發表於 2007/12/12 上午 12:01:00

永久連結 | 評論 (3) | 此文章的RSSRSS comment feed |

分類: SQL Server | Tips

標籤: , ,

收藏:

相關文章

評論

六月 17. 2008 20:48

青蛙

不好意思,請問一下板大:
剛剛測試了一下這個語法,覺得還滿讚的啊~
但小弟才識淺薄不懂您說的「...雖然不是十分完美.....」是何處的不完美?
是效能方面嗎,還是什麼?

謝謝唷~

青蛙 tw

六月 17. 2008 22:26

will

我說的不完美是指這段 T-SQL 的語法我覺得不夠直覺,且包含重複的表格名稱在內,而使用 SQL Server 2005 提供的 ROW_NUMBER() 函數似乎是比較好的作法。

ROW_NUMBER (Transact-SQL)
msdn.microsoft.com/en-us/library/ms186734.aspx

will tw

六月 18. 2008 23:29

青蛙

喔,大概了解了,再來去研究一下 ROW_NUMBER() ,謝謝您喔~ ^^

青蛙 tw

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

七月 4. 2009 03:09