select * from sjw_music where music_flag=1 order by music_name desc,music_infoflag asc;
我刚开始以为这样可以,发现不行?
music_name    music_flag   
 3               0
 2               1
 15              -1
 9               0
 16              0
 8               1假如我按着我的要求从上面获得3条消息,按music_name降序,按music_infoflag 升序
结果应该是下面这样的:
15           -1
3             0
9            0

解决方案 »

  1.   

    select .. from .
    order by music_name desc,music_infoflag
      

  2.   

    楼主的语句看起来没有问题
    先根据music_flag=1过滤结果
    然后按music_name desc降序,music_name相同的时候按music_infoflag 升序
      

  3.   

    实际执行的结果是怎样的呀。
    order by music_name desc,music_infoflag asc这样的写法是正确的哟,先用music_name降序排列,如果music_name一样的话,用第二排序字段music_infoflag升序排列
      

  4.   

    先用music_name降序排列,如果music_name一样的话,用第二排序字段music_infoflag升序排列
    不过搂主的结果好像实现不了。
      

  5.   

    Order by 后面排序的顺序好像不对
    select * from sjw_music where music_flag=1 order by music_infoflag asc, music_name desc; 
    就能出现
    music_name  music_infoflag
    15          -1 
    3            0 
    9            0 
    这样的效果了
      

  6.   


    这样的结果是先按music_infoflag 升序,后按按music_name升序排列出来的。.......order by music_infoflag asc,music_name asc;