首页 > 解决方案 > 可以对数据库表进行排序以使 NULL 值出现在底部吗?

问题描述

我有一个名为“客户”的数据库表,如下所示:

Sl     Name    Profession
1      ABC     Doctor
2      QWE     Engineer
3      ERT     null
4      DEF     Doctor
5      JGJ     null

我想订购这张表,因为所有有职业的名字都在开头,没有职业(空)的名字在底部,像这样:

Sl     Name    Profession
1      ABC     Doctor
2      QWE     Engineer
4      DEF     Doctor
5      JGJ     null
3      ERT     null

有什么查询可以做到这一点吗?提前致谢..

标签: mysqldatabase

解决方案


NULLMySQL(以及大多数 SQL 风格)中的 s 默认排序在第一个,而不是最后一个。将值强制NULL到底部的一种通用方法是使用CASEorIF表达式:

SELECT
    Sl, Name, Profession
FROM yourTable
ORDER BY
    IF(Profession IS NOT NULL, 0, 1),
    Sl;

推荐阅读