在MySQL中,当你使用ORDER BY进行排序时,默认情况下NULL值会被视为最大值,排在其他非NULL值的后面。如果你想要改变这种默认行为,使得包含NULL值的行在排序时出现在非NULL值之前,你可以使用ORDER BY子句中的IS NULL或ISNOT NULL条件以及CASE语句。
下面是一个示例,假设我们有一个名为students的表,其中包含名为name和score的列,我们想要按照score进行排序,但是将NULL的score视为最小值,排在非NULL分数的前面:
SELECT name, score
FROM students
ORDER BY
CASE
WHEN score IS NULL THEN 1
ELSE 0
END,
score;在这个查询中,我们首先根据score是否为NULL使用CASE语句来添加一个额外的排序条件。当score为NULL时,CASE语句返回1,这将使得这些行在排序中排在最前面。然后,我们按照score本身的值进行排序。由于CASE语句在这里已经保证了所有NULL值会被排序系统视为最小值,因此非NULL值会按照它们实际的排序顺序排列。