結(jié)局排序字段為空時恕洲,不參與排序
方法1:利用MySQL中的一個小技巧来涨,在字段前面加上一個負(fù)號图焰,也就是減號,ASC改成DESC 蹦掐,DESC改成ASC
SELECT
doc.*
FROM
hk_component_doc doc
WHERE
doc.com_type = 200
ORDER BY
-doc.com_sort DESC,
doc.com_name ASC
方法2:重新生成一列技羔,比如sortnull,利用is null操作符卧抗,把NULL值的行變成1藤滥,非NULL值的行變成0,先對該字段排序社裆,再對sort排序
SELECT
doc.* ,
doc.com_sort is NULL as sortNull
FROM
hk_component_doc doc
WHERE
doc.com_type = 200
ORDER BY
sortNull ASC,
doc.com_sort,
doc.com_name ASC
方法3:直接利用isnull函數(shù)對sort列求值拙绊,跟上一種方法的道理是一樣的
SELECT
*
FROM
hk_component_doc
WHERE
com_type = 200
ORDER BY
ISNULL( com_sort ) ASC,
com_sort,
com_name ASC
方法3:在order by 后面使用case when
SELECT
doc.*
FROM
hk_component_doc doc
WHERE
doc.com_type = 200
ORDER BY
CASE
WHEN doc.com_sort IS NULL THEN
1 ELSE 0
END,
doc.com_sort ASC,
CASE
WHEN doc.com_name IS NULL THEN
1 ELSE 0
END,
doc.com_name ASC