[英]SQL Query results pagination with random Order by in SQL Server 2008
我正在嘗試對網站上的頁面進行分頁,該頁面從數據庫表返回結果。
當前,它以隨機順序返回所有行。 但是,隨着數據庫的增長,我想對這些結果進行分頁,而不是將它們全部顯示在一頁上。 但是,我不想返回所有結果只是為了顯示20條記錄。 根據頁面的不同,我只想從數據庫中獲取20條相關記錄。
我正在關注本教程: 教程
但是,我不能將查詢與OFFSET
子句一起使用,因為托管使用SQL SERVER2008。(我相信它是在2012年引入的)。
我嘗試按照此問題的答案進行操作,但是我希望結果以隨機順序出現,並且我無法對派生表執行ORDER BY
...所以我有些想法了!
有什么幫助嗎? 謝謝!
這是我目前擁有的:
SELECT Title, Filename, PhotoURL, Orientation, FolderName, SetURL, RowNum
FROM (
SELECT p.Title, p.Filename, p.URL AS PhotoURL, p.Orientation, s.FolderName, s.URL AS SetURL, ROW_NUMBER() OVER (ORDER BY p.PhotoID) AS RowNum
FROM Photos p
LEFT OUTER JOIN SetPhotos sp
ON sp.PhotoID = p.PhotoID
LEFT OUTER JOIN [Sets] s
ON s.SetID = sp.SetID
WHERE p.Hide = 0
ORDER BY NEWID()
) AS PaginatedPhotos
WHERE PaginatedPhotos.RowNum BETWEEN 0 AND 10
請記住,如果您在某人分頁的中間打亂行,則相同的行會出現在不同的頁面上。
只需選擇TOP(pagesize)
。 由於您的訂單是隨機的,因此請求page = 2不會導致顯示第1頁的原始結果的頁面2。換句話說,當訂單是隨機的並且每次更改時,頁面1始終對所請求的任何頁面都是正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.