如何使用 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 获取和跳过记录 [重复]的主要内容,如果未能解决你的问题,请参考以下文章