如何只获取查询结果的第二、第三、第四或第五行?(SQL SERVER 2000)
我需要一个建议,甚至一个解决方案,如何以高性能获取查询结果的第二、第三...行。 我知道有可能 row_number(SQL Server 2005 或更高版本),但不适用于 SQL Server 2000 :-(
我第一次尝试获取第五行是:
选择前 1 列
FROM(选择前 5 列
来自表
按 col) q
排序 ORDER BY col DESC
我尝试解释我的要求:在我的表中最多可以有。 一个人可以排5排。 但如果这个人只存在 4 行,我上面的查询就会得到错误的结果。
有什么建议么?
任何帮助将不胜感激!
谢谢转发,最好的问候安德烈亚斯
I would need a suggestion or even a solution, how to get only the second,third... row of a query result with high performance. I know there is the possibility of row_number(SQL Server 2005 or higher) but not for SQL Server 2000 :-(
My first try to get the fifth row was:
SELECT TOP 1 col
FROM (SELECT TOP 5 col
FROM table
ORDER BY col) q
ORDER BY col DESC
I try to explain my requirements: In my table there can be max. 5 rows for one person. But if only 4 rows for this person exists I would get a wrong result with my above query.
Any suggestions?
Any help will be appreciated!
Thx forward, Best Regards Andreas
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
也许最好、最快的方法就是在数据读取器中选择前 5 个,然后根据需要将下一个读入内存。
Probably the best and fastest way to do this is just select the top 5 in a datareader, and just read the next into memory as you need it.
要获取第 5 行,您可以使用多个子查询,例如:
To get the 5th Row, you can use multiple subqueries like:
这应该可以做到...
This should do it...
如果我理解正确的话,例如,您只希望在实际上有第五行时返回该行。 在这种情况下,您可以这样做:
If I understand correctly, you only want the row returned if there actually is a 5th row, for example. In that case, you can do this:
这是另一个例子。 该表使用带有标识列的临时表。
Here's another example. This one uses a temporary table with an identity column.