小编典典

ASC排序,底部为空

mysql

我正在编写一个将学校表连接到地区表的SQL查询。每个学校都隶属于一个地区的简单一对多关系。我的查询如下:

SELECT 
    schools.id AS schoolid,
    schools.name AS school, 
    districts.id AS districtid, 
    districts.name AS district
FROM sms_schools AS schools
    LEFT JOIN sms_districts AS districts ON schools.districtid = districts.id
WHERE 1 = 1
ORDER BY districts.name, schools.name

我之所以加入左派,是因为并非每所学校都隶属于一个地区。例如,一所学校可能是在家上学的,其中可能包含所有在家上学的学生。那不会在一个地区。

所以我想做的是使用ORDER BY来按地区名称排序,然后按学校名称排序。唯一的问题是,我希望空区位于底部,以便可以在输出末尾使用名为“其他”的组。

是否可以通过在输出末尾以null升序进行排序?


阅读 307

收藏
2020-05-17

共1个答案

小编典典

问了问题仅1分钟后,我就找到了答案。在order by子句用例中,使null具有比其他任何东西更高的值:

 ORDER BY (CASE WHEN districts.id IS NULL then 1 ELSE 0 END),districts.name, schools.name;
2020-05-17