2012-04-21 142 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

回答