【发布时间】:2012-01-02 00:58:56
【问题描述】:
我有以下工作查询:
string sqlString =
"SELECT * " +
"FROM (SELECT ROW_NUMBER() OVER (ORDER BY Id DESC) AS RowNum, * " +
"FROM StreamView " +
"WHERE Recipient = @Recipient " +
") AS RowConstrainedResult " +
"WHERE RowNum >= @startAt " +
"AND RowNum < @howMany " +
"ORDER BY RowNum;";
然后返回给定 startAt 和 howMany 变量的正确行。 我想对下面的查询做同样的事情:
string sqlString =
"SELECT DISTINCT l.* FROM Streams l " +
"INNER JOIN Friendships f ON f.Sender = @UserName OR f.Recipient = @UserName " +
"WHERE l.Sender <> @UserName AND l.Recipient <> @UserName AND ( " +
"l.Sender = f.Recipient OR l.Sender = f.Sender OR " +
"l.Recipient = f.Sender OR l.Recipient = f.Recipient) " +
"ORDER BY DateTime DESC;";
上面的查询完美运行,但我想获取范围而不是所有可用的行。我需要与第一个查询相同的功能。
想法?谢谢。
【问题讨论】:
-
排名范围是多少?
-
什么意思?第一个查询在 c# 类中,并像这样调用 (
getstream(0,10,'someone')) - 这会从表中返回第 0 到第 10 行。我正在尝试对第二个查询执行相同的操作,使其结果保持原样,但添加范围功能(用于延迟滚动) -
您是按日期订购的——所以您要说订购日期的前 10 个,然后是订购的第 2 个 10 个日期?
-
是的,我在这里按日期订购只是为了先获得最新的。但你知道的。
标签: sql sql-server sql-server-2008 pagination