mysql 有一列:area_id ,为数字和下划线构成,查询记录时我想依据它排序假如area_id如下:

0_1 
0_3 
0_2 

2_1  
2_1_1   
2_1_3    
2_1_2

1_1  
1_1_2   
1_1_1  我想始其变成正常的顺序:

0_1 
0_2 
0_3 

1_1  
1_1_1   
1_1_2 

2_1  
2_1_1   
2_1_2    
2_1_3我用ORDER BY abs(area_id)只能对下划线前的数字排序,对第二个数字就失效了,怎么办?请同仁点拔一下,给一句查询代码。谢谢!

解决方案 »

  1. <?php
    $a=array('0','0_1','0_3','0_2','2','2_1','2_1_1','2_1_3','2_1_2','1','1_1','1_1_2','1_1_1');
    sort($a);
    print_r($a);
    ?>
    直接用sort就可以了
      

  2. 这个字段是varchar类型的吧,直接升序排序就可以了
      

  3. #1楼:你那是PHP排序,我是问mysql排序
      


  4. 是varchar类型,但不行,会出现:
    0_X_X
    1_X_X
    12_X_X //这里10位数的提前了
    2_X_X
      


  5. 怎么肯能是这样  是varchar类型就用升序排列就行了的,你把情况将清楚点
      

  6. 既然不能用sql语句直接排序,
    那就用php排序吧,sort也存在 大于10的时候排序混乱现象。foreach 吧
      


  7. mysql字符串按数值排序方法将字段*1或者加0  可以变成数值例如:一   select * from table where 1  order by id+0 desc   按id对应的数值降排二  select   *  from  table   where   1   order  by  id*1  asc  按id对应的数值升排
      

类似问题 »