簡體   English   中英

SQL Server 2008中帶有隨機順序的SQL查詢結果分頁

[英]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
  1. 將整數列“ order”添加到表中
  2. 編寫代碼以唯一的隨機數填充所有行中的此列
  3. 時不時地運行此代碼以隨機排列行
  4. 按“順序”排序時照常進行分頁

請記住,如果您在某人分頁的中間打亂行,則相同的行會出現在不同的頁面上。

只需選擇TOP(pagesize) 由於您的訂單是隨機的,因此請求page = 2不會導致顯示第1頁的原始結果的頁面2。換句話說,當訂單是隨機的並且每次更改時,頁面1始終對所請求的任何頁面都是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM