【问题标题】:Select records from n1 to n2从 n1 到 n2 中选择记录
【发布时间】:2012-05-15 13:11:29
【问题描述】:

例如,我的表中有 10.000 条记录。每次执行查询时,我都会将页码 n 作为参数。我必须从nn*100 中选择满足一些复杂条件的记录。我也用ORDER BY,所以不能保留最后一个元素的PrimaryKey,用主键选择顶部的n记录。我怎样才能做到这一点?

【问题讨论】:

  • 所以你问如何实现页面大小为100的分页?
  • 是的)))。问题是 OrderBy。如果不使用它,我可以实现分页。
  • 您正在使用哪个数据库以及如何访问它?尽管您可以在 SQL 中执行此操作,但在应用程序级别执行此操作可能会更好。例如,在 Excel/VBA 中,您可以设置 SQL 连接以允许结果集向前和向后移动。
  • sql server 2008,我重新标记了我的问题。我从 c#、.Net 4 连接到数据库

标签: sql sql-server sql-server-2008 select


【解决方案1】:

在Page计算的基础上,在后面的查询中传递From和To参数的值。

WITH NumberedMyTable AS
(
    SELECT
        *,
        ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber
    FROM
        MyTable
)
SELECT
    *
FROM
    NumberedMyTable
WHERE
    RowNumber BETWEEN @From AND @To

【讨论】:

    【解决方案2】:
    declare @n int
    set @n=2
    
    with my_query as(
        select ROW_NUMBER() over (order by name) as ID, * 
        from sys.tables
    )
    select * 
    from my_query
    where ID >=@n and ID<=(@n*10)
    

    【讨论】:

      猜你喜欢
      • 2014-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      • 2016-09-05
      相关资源
      最近更新 更多