使用 Row_Number() 选择行的子集
Select id, name, ROW_NUMBER() OVER (ORDER BY id asc) as 'RowNo'
from customers
where RowNo between 50 AND 60
我正在尝试选择 50 到 60 之间的行子集。问题是“RowNo”是无效的列名。
感谢您
使用 SQL SERVER 2008 R2
Select id, name, ROW_NUMBER() OVER (ORDER BY id asc) as 'RowNo'
from customers
where RowNo between 50 AND 60
I am trying to select a subset of rows between 50 and 60 . The problem is 'RowNo' is an invalid column name.
Thank you
Using SQL SERVER 2008 R2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用您的查询作为子查询,如下所示:
您也可以使用 CTE,但是否选择一种而不是另一种请阅读 CTE 和 SubQuery 之间的区别?并检查执行计划。
Use your query as subquery like bellow:
You can use CTE as well but whether to choose one over another read Difference between CTE and SubQuery? and check execution plan.
您需要执行以下操作:
使用 CTE(通用表表达式 - 一种“内联视图”)作为“包装器”,以便您的
RowNo
成为有效的列名称。作为 Outlook - 使用 SQL Server 2012,您可以编写如下内容:
SQL Server 2012 将具有符合 ANSI SQL 标准的表示法,可以直接基于
ORDER BY
子句进行分页。 请参阅此博文(或其他大量博文)以获取更多信息和更多示例。You need to do something like this:
Use a CTE (Common Table Expression - sort of an "inline view") as a "wrapper" so that your
RowNo
becomes a valid column name.As an outlook - with SQL Server 2012, you'd be able to write something like this:
SQL Server 2012 will have this ANSI SQL Standard compliant notation to do paging directly based on an
ORDER BY
clause. See this blog post (or tons of others) for more info and more samples.