问题描述
MySQL 在排序时, 如何从小到大排序, 并将0排在最后面
如图:
解决办法
利用CASE THEN来处理, 原理是将sort等于0的转为比较大的数值放到了最后,其实也是遵循了 sort ASC 的原则.
SELECT * FROM `banner` ORDER BY CASE when sort<>0 then sort else 99999 end;
结果如图:
另外一种方法, 达到同样的效果:
SELECT * FROM `banner` ORDER BY sort = 0,sort;
转变举例: 0 放前面并从大到小排序
SELECT * FROM `banner` ORDER BY CASE when sort<>0 then sort else 99999 end DESC;