c# - 带偏移量和获取的 SQL 查询

标签 c# mysql sql asp.net pagination

我正在创建一个基本的 ASP.net 博客主页。 我有两个表(结构如下)。我需要这些表中的数据进行分页,因此我在查询本身中使用了 offsetskip

表格是:

表格 - 博客:

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,则查询将返回一定数量的行。

预期结果是:

Expected result

我做错了什么或者有更好的方法吗?请在这件事上给予我帮助。谢谢。

最佳答案

OFFSET 用于省略特定数量的行,FETCH NEXT 用于获取紧随偏移量之后的一定数量的行,这里 order by 保留行的顺序,以便您准确地获得您期望的内容得到,所以如果你的查询没有给出输出,那么这意味着你在偏移 73 行后没有行可以获取,在你的情况下,查询只给出 7 行,因此你不会得到输出。

关于c# - 带偏移量和获取的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53139081/

相关文章:

使用 StreamWriter 写入文本文件时出现 C# OutOfMemoryException

mysql - 将表中的大列拆分为另一个较小列的表 MYSQL

php - "Access denied"与 MySQL 通信时出错

MySQL 列出实体并在连接表上应用 AND 过滤器

sql - SQL Joining 3个表标记系统代码点火器

sql - Postgres : huge table with (delayed) read and write access

c# - 在 C# 中访问 SQL Server 存储函数的结果

c# - 如何在 .NET 中构建图表应用程序?

c# - 没有控制台窗口或依赖项的简单 DOM 操作

mysql - 使用 SQL 生成模式