我正在我的网站上构建一个博客帖子详细信息页面,该页面将显示一个“上一个”和“下一个”链接,类似于typepad博文的工作方式。见下面的例子。
我想知道是否有办法查询数据库,它完成了下面的图像,它选择了“当前”记录(黄色)进行显示,但也选择了下一个和以前的记录(绿色)按PublishDate排序。
另外,为了澄清,我正在使用的数据库表具有唯一的发布日期。很抱歉,示例图像显示了具有相同PublishDate的多个记录。
答案 0 :(得分:11)
答案 1 :(得分:4)
您需要一种订购帖子的方法。如果你有,那么你可以在SQL Server 2005+中执行类似下面的操作,在那里传入你想要的项目编号:
With OrderedPosts As
(
Select ...
, ROW_NUMBER() OVER ( ORDER BY PublishDate ) As ItemRank
From ..
Where ...
)
Select
From OrderedPosts
Where ItemRank = @ItemNumber
在站点代码中,您需要跟踪当前的数字,然后减去一个并重新查询以获取前一个或添加一个并重新查询以获得下一个。
如果您想在单个查询中使用下一个和上一个以及当前内容,那么您可以执行以下操作:
With OrderedPosts As
(
Select ...
, ROW_NUMBER() OVER ( ORDER BY PublishDate ) As ItemRank
From ..
Where ...
)
Select
From OrderedPosts
Where ItemRank Between (@ItemNumber - 1) And (@ItemNumber + 1)
答案 2 :(得分:0)
请参阅microsoft tech net的以下文章
http://social.technet.microsoft.com/wiki/contents/articles/23811.paging-a-query-with-sql-server.aspx
希望这个帮助