2012-04-21 141 views
0

我嘗試做一個分頁功能與圖像的行,它工作得很好,當我通過這樣做的順序:排除在SQL Server 2008中查詢

WHERE tblUploadedImages.ImageID NOT IN (
    SELECT TOP (@Exclude) ImageID FROM tblUploadedImages 
    ORDER BY tblUploadedImages.Added) 
    ORDER BY tblUploadedImages.Added 

工程。但是當我根據有多少人喜歡這些圖像來顯示圖像時,有些圖像不會被排除。

ALTER PROCEDURE GetMostLikedImages 
    @Exclude INT 
AS 
    SELECT TOP (10) 
     (SELECT COUNT(DISTINCT UserID) 
      FROM tblLike 
      WHERE tblUploadedImages.ImageID = tblLike.ImageID) AS LikeCount, 
     (SELECT COUNT(ImageID) 
      FROM tblUploadedImages) AS ImageCount, 
     tblUploadedImages.ImgUrl,    
     tblUploadedImages.ImageID 
    FROM 
     tblUploadedImages 
    WHERE 
     tblUploadedImages.ImageID NOT IN 
      (SELECT TOP (@Exclude) 
       (SELECT COUNT(DISTINCT UserID) 
        FROM tblLike 
        WHERE tblUploadedImages.ImageID = tblLike.ImageID) AS LikeCount 
       ORDER BY LikeCount DESC, tblUploadedImages.Added) 
    ORDER BY 
     LikeCount DESC, tblUploadedImages.Added 

有人知道我可以做,如果我通過LikeCount(即喜歡的圖片有多少人)

+2

爲什麼不分頁使用CTE和ROW_NUMBER()? – cairnz 2012-04-21 10:10:50

+0

我認爲這樣會更容易... – user1007103 2012-04-21 10:14:07

+2

謝謝,這解決了我的問題。我搜索並找到了一些sampelcodes。 (http://sqlserverplanet.com/sql/pagination-using-rownumber)我改變了我的查詢使用CTE和ROW_NUMBER()。如果你把它寫成答案,我會檢查它。 – user1007103 2012-04-21 11:17:41

回答