1. 表结构与数据
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int NOT NULL AUTO_INCREMENT,
`test_id` int DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
2. 方法
方式一
SELECT * FROM test ORDER BY num IS NULL , num;
方式二
SELECT * FROM test ORDER BY IF(ISNULL(num),1,0), num DESC;
1. 将NULL强制放在最前
IF(ISNULL(字段名),0,1) ASC // ASC可以省略2. 将null强制放在最后
IF(ISNULL(字段名),0,1) DESC
IF(ISNULL(字段名),1,0) ASC // ASC可以省略
查询空值的运行速度基本上为: IFNULL() > IS NULL > ISNULL()