sql - 当使用所有 NULL 对列进行排序时,OFFSET 不起作用
问题描述
我不明白为什么当我检索按包含所有值OFFSET
的列排序的表时该子句不起作用?NULL
例如,假设我有一个People
包含ID
、Gender
和Race
列的表。这Race
列包含所有NULL
值。
当我运行这些查询时,为什么它们检索相同的数据?
SELECT *
FROM People
ORDER BY Race ASC
OFFSET 0 ROWS --offset 0 rows
FETCH NEXT 15 ROWS ONLY
SELECT *
FROM People
ORDER BY Race ASC
OFFSET 15 ROWS --offset 15 rows
FETCH NEXT 15 ROWS ONLY
我知道排序不起作用,因为Race
列中的所有值都是NULL
. 我不明白为什么它在第二个查询中没有偏移 15 行。OFFSET
仅当列包含一些非 NULL 值时才能正常运行。
解决方案
SELECT *
FROM People
ORDER BY Race ASC, row_number() over(order by Race)
-- OFFSET 0 ROWS --offset 0 rows
-- FETCH NEXT 15 ROWS ONLY
OFFSET 15 ROWS --offset 15 rows
FETCH NEXT 15 ROWS ONLY
推荐阅读
- php - 如何让我的 $_POST 识别这些值
- python - 如何在 Django Graphene 查询中公开 Wagtail 搜索?
- python - 如何使用从flask api的get请求中收到的内容作为flask中的参数调用函数
- java - org.hibernate.LazyInitializationException:在春季安全登录期间未能延迟初始化角色集合
- php - 如何从多个复选框中检索数组值?
- laravel - 如何在 Laravel 中制作迁移模型
- php - 使用 FormData 和 PHP 上传多个文件
- netty - LengthFieldBasedFrameDecoder 头校验
- gradle - appcompat 中的 Android Studio app.gradle 错误
- swift - UITableViewCell 上的 UIView 在没有动画的情况下更新