【问题标题】:What is the sql server 2008 query to retrieve records from a sql view based on the row numbers?根据行号从 sql 视图中检索记录的 sql server 2008 查询是什么?
【发布时间】:2015-09-15 09:53:07
【问题描述】:

如果我有一个包含 1000 条记录的 sql 视图,我想检索行号 20 到 500 之间的记录。执行此操作的查询是什么?

或者

有没有办法在视图中添加行号之类的列?

【问题讨论】:

标签: sql sql-server database sql-server-2008


【解决方案1】:

为此使用 SQL 中可用的 row_number 函数,例如

WITH tbl AS
(
    SELECT
       .. ,
        ROW_NUMBER() OVER (ORDER BY ..) AS RowNumber
    FROM
        yourtable
)
SELECT
    ..
FROM
    tbl
WHERE
    RowNumber BETWEEN 20 AND 500

更新:

关于查询的性能,也请检查这个,

    select .. from (SELECT
      .. , Row_Number() over (order by ..) as rownumber

    FROM
        yourtable) as A
where
    rownumber BETWEEN 20 AND 500

希望这会有所帮助。

【讨论】:

  • 但是考虑到性能,这个查询有点笨拙,因为它将整个视图加载到表 'tbl' 并再次在 'tbl' 上执行选择查询。
  • 更新后的查询似乎比之前的查询花费了更多的 Sql server 执行时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 2013-09-23
相关资源
最近更新 更多