NULL 的排序位置要点
- 默认升序时 NULL 排在最前,降序时排在最后
- MySQL 8.0.16 起支持 NULLS FIRST / NULLS LAST 显式指定
- NULLS FIRST 让空值永远置顶,NULLS LAST 永远垫底
- 低版本没有该语法,可用 IS NULL 技巧或函数模拟
- 排序含空值的报表,务必显式声明空值位置避免歧义
- NULL 参与排序不会报错,但位置要靠约定固定
NULL 的排序位置示例
SELECT name, price FROM product ORDER BY price DESC NULLS LAST;
SELECT name, price FROM product ORDER BY price ASC NULLS FIRST;
避坑提醒:含空值字段排序,最稳的是显式写 NULLS FIRST / LAST,别依赖默认;否则换版本或换引擎,空值位置可能悄悄变了。