我正在创建一个基本的 ASP.net 博客主页。 我有两个表(结构如下)。我需要这些表中的数据进行分页,因此我在查询本身中使用了 offset 和 skip。
表格是:
表格 - 博客:
Id(primary),
Description,
Data,
CreatedById,
CreatedDate,
ImageUrl,
IsDeleted,
Tags,
StatusId(value = 1 for draft and 2 for publish)
表 - 博客类别:
Id,
BlogId(foreign key to table 1),
CategoryId
这些表中已经有数据。我正在使用以下查询来获取数据
Select *
from Blog b inner join
BlogCategories bc
on b.Id = bc.BlogId
where b.StatusId = 2 and bc.CategoryId = 2 and b.IsDeleted = 0
ORDER BY b.CreatedDate desc
OFFSET 73 ROWS
FETCH NEXT 9 ROWS ONLY;
此查询返回 0 行,但如果我从 where 子句中删除 statusId 和 CategoryId,则查询将返回一定数量的行。
预期结果是:
我做错了什么或者有更好的方法吗?请在这件事上给予我帮助。谢谢。
最佳答案
OFFSET 用于省略特定数量的行,FETCH NEXT 用于获取紧随偏移量之后的一定数量的行,这里 order by 保留行的顺序,以便您准确地获得您期望的内容得到,所以如果你的查询没有给出输出,那么这意味着你在偏移 73 行后没有行可以获取,在你的情况下,查询只给出 7 行,因此你不会得到输出。
关于c# - 带偏移量和获取的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53139081/