在MySQL中,使用ORDER BY语句对数据进行排序时,如果数据中包含NULL值,NULL值的处理方式取决于排序的顺序和是否指定了NULLS FIRST或NULLS LAST选项。
1、默认情况下:
- 在升序排序(
ASC)时,NULL值会被排序到结果集的最后。 - 在降序排序(
DESC)时,NULL值会被排序到结果集的最前。
2、使用NULLS FIRST:
- 无论升序还是降序,
NULL值都会被排序到结果集的最前。
3、使用NULLS LAST:
- 无论升序还是降序,
NULL值都会被排序到结果集的最后。
例如,假设有一个名为employees的表,其中有一个salary字段,我们可以这样使用ORDER BY:
- 升序排序,
NULL值在最后:
SELECT * FROM employees ORDER BY salary ASC;- 降序排序,
NULL值在前:
SELECT * FROM employees ORDER BY salary DESC NULLS FIRST;- 升序排序,
NULL值在前:
SELECT * FROM employees ORDER BY salary ASC NULLS FIRST;- 降序排序,
NULL值在最后:
SELECT * FROM employees ORDER BY salary DESC NULLS LAST;请注意,NULLS FIRST和NULLS LAST选项在不同的数据库系统中可能有所不同,或在某些系统中可能不可用。在MySQL 8.0及更高版本中,这些选项是可用的。





苏公网安备32021302001419号