如何使用 TSQL 而不是 linq 获取和跳过记录 [重复]

Posted

技术标签:

【中文标题】如何使用 TSQL 而不是 linq 获取和跳过记录 [重复]【英文标题】:how to take and skip records using TSQL instead of linq [duplicate] 【发布时间】:2020-06-19 09:40:37 【问题描述】:

我想获取十条记录但跳过前 20 条?我知道如何在 linq 中做到这一点,但如何在 TSqL 中做到这一点。

在 linq 中会是这样的:

qp = dbContext.Products.Where(p => p.Active).OrderBy(p => p.Name)
                .Skip((curPage - 1) * prodPerPage).Take(prodPerPage);

【问题讨论】:

编辑问题添加示例数据和期望的结果会有所帮助。 【参考方案1】:

在 SQL Server(和大多数其他数据库)中,ROW_NUMBER 提供了一种通用方法:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (ORDER BY some_column) rn
    FROM yourTable
)

SELECT *
FROM cte
WHERE rn BETWEEN 21 AND 30; -- skip the first 20 records, and keep the 10 after that

【讨论】:

以上是关于如何使用 TSQL 而不是 linq 获取和跳过记录 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

laravel 4 - 如何限制(采取和跳过)雄辩的 ORM?

多线程增量和跳过 0 没有锁?

Apollo GraphQl 分页 - 限制和跳过

SQL:更新时如何判断和跳过唯一约束?

phpmailer 列循环和跳过 NULL

在 GraphQL 查询中分组后如何限制和跳过标签列表页面的分页?