1. 只按日期排序,忽略年份 > selectdate, description from table_name order by month(date),dayofmonth(date); 注意:单纯使用dayofyear来排序会导致错误,如2-29与非闰年的3-1日同等级
2. 排序点分式IP > select ip from table_name order by inet_aton(ip); 或者在设计表时就使用 intunsigned 来表示ip。
3. 将某列中特定值排在最前 例如想把表中lulu的名字排在最前显示,其他按字母排序 > select name from table_name order by if(name='lulu',0,1),name ; 也可以把if的条件根据需要换成相应的语句。
4. 将某列内容按照用户自定义的顺序排序 例如想把表中的名字按lulu,xixi,baba,mama的非常规顺序排序输出: > select name from table_name order by field(name,'lulu','xixi','baba','mama');
5. 对枚举类型排序 枚举类型默认为数字排序,如果希望以字符串形式排序。 > select name from table_name order by cast(name aschar); 如果希望更改enum的排序默认顺序,可以alter table alter table table_name modify name enum('lulu','xixi','mama','baba');
6. 按csv类型的字符串的某字串排序 例如某列m_str内容是形如abc-321-mno-jkl的形式,希望对第二列进行排序 > select m_str from table_name order by substring_index(substring_index(m_str,'-',2),'-',-1);