1. 只按日期排序,忽略年份
> select date, description from table_name order by month(date),dayofmonth(date);
注意:單純使用dayofyear來排序會導致錯誤,如2-29與非閏年的3-1日同等級
> select ip from table_name order by inet_aton(ip);
或者在設計表時就使用int unsigned 來表示ip。
例如想把表中lulu的名字排在最前顯示,其他按字母排序
> select name from table_name order by if(name=’lulu’,0,1),name ;
也可以把if的條件根據需要換成相應的語句。
例如想把表中的名字按lulu,xixi,baba,mama的非常規順序排序輸出:
> select name from table_name order by field(name,’lulu’,’xixi’,’baba’,’mama’);
枚舉類型預設為數字排序,如果希望以字串形式排序。
> select name from table_name order by cast(name as char);
如果希望更改enum的排序預設順序,可以alter table
alter table table_name modify name enum(‘lulu’,’xixi’,’mama’,’baba’);
例如某列m_str內容是形如abc-321-mno-jkl的形式,希望對第二列進行排序
> select m_str from table_name
order by substring_index(substring_index(m_str,’-‘,2),’-‘,-1);
> select date, 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);
或者在設計表時就使用int unsigned 來表示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 as char);
如果希望更改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);