Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2788714
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Mysql/postgreSQL

2014-08-18 18:20:49

原文地址:mysql order by的一些技巧 作者:cenalulu

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);

阅读(939) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~