sql查询

csbfibhn  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(162)

我正在创建一个基本的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,查询将返回一定数量的行。
预期结果是:

是我做错了什么,还是有更好的方法。请帮帮我。谢谢您。

polkgigr

polkgigr1#

只有7行满足此条件

b.StatusId = 2 and bc.CategoryId = 2 and b.IsDeleted = 0

如果您想跳过73行结果,但仍得到一些行,则必须向数据库中添加更多数据。

i86rm4rw

i86rm4rw2#

offset用于省略特定数量的行,fetch next用于获取紧跟在offset之后的一定数量的行,这里order by保留行的顺序,这样您就可以精确地获得您希望得到的结果,因此如果您的查询没有给出输出,则意味着您在偏移73行之后就没有行可以获得了,在您的例子中,查询只给出7行,因此您不会得到输出。

相关问题