ORACLE在一个SQL怎么对一个字段升序同时对另一个字段降序排序呢?

时间:2022-05-08 14:53:44
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

10 个解决方案

#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


引用楼主 sujiewen 的回复:
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

先用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


引用楼主 sujiewen 的回复:
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


这样的结果是先按music_infoflag 升序,后按按music_name升序排列出来的。。。。

.......order by music_infoflag asc,music_name asc;

#7


ORACLE在一个SQL怎么对一个字段升序同时对另一个字段降序排序呢?
引用 3 楼 inthirties 的回复:
实际执行的结果是怎样的呀。


order by music_name desc,music_infoflag asc这样的写法是正确的哟,

先用music_name降序排列,如果music_name一样的话,用第二排序字段music_infoflag升序排列

#8


学习ing

#9


 我个人觉得不行`

#10


该回复于2011-05-17 17:00:41被版主删除

#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


引用楼主 sujiewen 的回复:
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

先用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


引用楼主 sujiewen 的回复:
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


这样的结果是先按music_infoflag 升序,后按按music_name升序排列出来的。。。。

.......order by music_infoflag asc,music_name asc;

#7


ORACLE在一个SQL怎么对一个字段升序同时对另一个字段降序排序呢?
引用 3 楼 inthirties 的回复:
实际执行的结果是怎样的呀。


order by music_name desc,music_infoflag asc这样的写法是正确的哟,

先用music_name降序排列,如果music_name一样的话,用第二排序字段music_infoflag升序排列

#8


学习ing

#9


 我个人觉得不行`

#10


该回复于2011-05-17 17:00:41被版主删除