我正在开发一个ASP.Net项目,用于在数据库中显示网站上的信息。我想从新闻表中选择前10项,但跳过第一项,我遇到了一些问题。
<asp:SqlDataSource ID="SqlDataSource1"
runat="server" ProviderName="System.Data.SqlClient"
ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
SelectCommand="SELECT top 5 [id],
[itemdate],
[title],
[description],
[photo]
FROM [Announcements] order by itemdate desc">
</asp:SqlDataSource>
这是我到目前为止所得到的,但我在网上找不到有关如何跳过记录的任何信息
答案 0 :(得分:9)
对于SQL Server 2005+,请使用:
SELECT x.*
FROM (SELECT t.id,
t.itemdate,
t.title,
t.description,
t.photo,
ROW_NUMBER() OVER (ORDER BY t.itemdate) AS rank
FROM ANNOUNCEMENTS t) x
WHERE x.rank BETWEEN a AND b
但是,如果真的是你所追求的,那么有更好的实施分页的方法。
答案 1 :(得分:8)
您可以使用过滤器或在SQL中执行此操作:
SELECT top 10
[id],
[itemdate],
[title],
[description],
[photo]
FROM [Announcements]
WHERE id <> (select TOP 1 id from announcements order by itemdate desc)
order by itemdate desc
编辑:我从字面上看“跳过第一个项目”。也许这不是你的意思?
答案 2 :(得分:1)
答案 3 :(得分:0)
DECLARE @topid int
select @topid = max(id) from announcements group by itemdate, id
SELECT top 10 [id], [itemdate], [title], [description], [photo]
FROM [Announcements] A
WHERE A.id <> @topid
order by itemdate desc