order by后有多个条件怎么写?

时间:2022-02-05 02:45:10
一段SQL语句中排序有多个要求.
第一个排序要求:按字段type1的值排序.   注: type1字段中值有NY、GB、SN等情况,要按先NY,再按GB来排
第二个排序条件是按“年号”这个字段
第三个排序条件是按ID


这种组合排序条件怎么写?

5 个解决方案

#1


如何让ORDER BY按指定的顺序排序 
 
表a里有个列叫Type,是商品类别,就3种情况:S,A,B,如下:
id name type 
1  一班 S 
2  五班 A 
3  三班 B 
4  四班 B 
5  二班 A 
6  六班 S 
现在我需要按照‘S’,‘A’,‘B’的顺序排序,如下:
1 一班 S 
6 六班 S 
5 二班 A 
2 五班 A 
3 三班 B 
4 四班 B 

SELECT *
FROM tbl_test
ORDER BY "@#$$%#$%@$@#$@$@#@$这里应该咋写?"
 
select * from a where type='S' union all
select * from a where type='A' union all
select * from a where type='B'  
select id , name ,type
from a
order by case type when 'S' then 1
when 'A' then 2 when 'B' then 3 else 4 end (如果对ID排序,则加最后加,id)  
select id , name ,type
from (select *, case type when 'S' then 1 when 'A' then 2 else 3 end as seq from a) X
order by seq  
上诉对ID列没有进行排序,如果在上诉基础上对ID再进行排序。
select id , name ,type(假设有列id ,name, type)
from (select *, case type when 'S' then 1 when 'A' then 2 else 3 end as seq from a) X
order by seq,id 
1 一班 S 
6 六班 S 
2 五班 A 
5 二班 A 
3 三班 B 
4 四班 B 
 

#2


select * from tb order by case type1 when 'NY' then 1 when 'GB' then 1 else 3 end,年号,id

#3


type1字段中值有NY、GB、SN等情况,要按先NY,再按GB来排

select * from tab order by case type1 when 'ny' then '1' when 'gb' then '2' when 'sn' then '3' end ,年号,id

#4



第一个排序要求:按字段type1的值排序.       注:   type1字段中值有NY、GB、SN等情况,要按先NY,再按GB来排 
第二个排序条件是按“年号”这个字段 
第三个排序条件是按ID 
----------------------
select * from 表 order by case type1 when 'Ny' then 0 when 'GB' then 1 else 2 end,年号,id

#5


ORDER BY CHARINDEX(type1,'NY,GB,SN'),年号,ID

#1


如何让ORDER BY按指定的顺序排序 
 
表a里有个列叫Type,是商品类别,就3种情况:S,A,B,如下:
id name type 
1  一班 S 
2  五班 A 
3  三班 B 
4  四班 B 
5  二班 A 
6  六班 S 
现在我需要按照‘S’,‘A’,‘B’的顺序排序,如下:
1 一班 S 
6 六班 S 
5 二班 A 
2 五班 A 
3 三班 B 
4 四班 B 

SELECT *
FROM tbl_test
ORDER BY "@#$$%#$%@$@#$@$@#@$这里应该咋写?"
 
select * from a where type='S' union all
select * from a where type='A' union all
select * from a where type='B'  
select id , name ,type
from a
order by case type when 'S' then 1
when 'A' then 2 when 'B' then 3 else 4 end (如果对ID排序,则加最后加,id)  
select id , name ,type
from (select *, case type when 'S' then 1 when 'A' then 2 else 3 end as seq from a) X
order by seq  
上诉对ID列没有进行排序,如果在上诉基础上对ID再进行排序。
select id , name ,type(假设有列id ,name, type)
from (select *, case type when 'S' then 1 when 'A' then 2 else 3 end as seq from a) X
order by seq,id 
1 一班 S 
6 六班 S 
2 五班 A 
5 二班 A 
3 三班 B 
4 四班 B 
 

#2


select * from tb order by case type1 when 'NY' then 1 when 'GB' then 1 else 3 end,年号,id

#3


type1字段中值有NY、GB、SN等情况,要按先NY,再按GB来排

select * from tab order by case type1 when 'ny' then '1' when 'gb' then '2' when 'sn' then '3' end ,年号,id

#4



第一个排序要求:按字段type1的值排序.       注:   type1字段中值有NY、GB、SN等情况,要按先NY,再按GB来排 
第二个排序条件是按“年号”这个字段 
第三个排序条件是按ID 
----------------------
select * from 表 order by case type1 when 'Ny' then 0 when 'GB' then 1 else 2 end,年号,id

#5


ORDER BY CHARINDEX(type1,'NY,GB,SN'),年号,ID