空值排序查询

在表里某个字段含有空值(NULL),这时候想把空值的统一排到前面或者后面,然后并不影响其他有值记录的正常排序。

方法一:在排序里添加判断

SELECT * FROM TABLE1 t ORDER BY t.COL1 IS NULL, t.COL1; -- 空值排后
SELECT * FROM TABLE1 t ORDER BY t.COL1 IS NOT NULL, t.COL1; -- 空值排前

同理也可以使用 IFNULL() 或者 ISNULL() 等方法在排序里进行判断。

方法二:将空值字段打个标记,再使用内联视图进行二次查询。

SELECT
	* 
FROM
	( SELECT t.*, CASE WHEN t.COL1 IS NULL OR t.COL1 = '' THEN 1 ELSE 0 END IS_NULL FROM TABLE1 t ) v 
ORDER BY
	v.IS_NULL DESC,
	v.COL1
此条目发表在数据库分类目录,贴了, 标签。将固定链接加入收藏夹。