我有一个查询,如下所示
SELECT * FROM vehicle_type_master order by standard_volume asc
产生以下结果
Vehicle_Type_ID standard_volume
TATA ACE 20
407 30
20 FT 40
因此可能会出现以下情况,查询看起来像
第一个实例:
SELECT * FROM vehicle_type_master where Vehicle_Type_ID = '407'
因此对于此查询,期望的结果应为
Vehicle_Type_ID standard_volume
407 30
TATA ACE 20
20 FT 40
第二实例:
SELECT * FROM vehicle_type_master where Vehicle_Type_ID = '20 FT'
因此对于此查询,期望的结果应为
Vehicle_Type_ID standard_volume
20 FT 40
TATA ACE 20
407 30
因此,无论出现哪种条件,都应按照standard_volume
asc显示应该首先出现的条件和其他行。
任何帮助表示赞赏
答案 0 :(得分:2)
您可以将CASE WHEN
与多个ORDER BY
一起使用
SELECT *
FROM vehicle_type_master
ORDER BY (CASE WHEN Vehicle_Type_ID = '407' then 0 else 1 end) ,
standard_volume asc
SQLfiddle:http://sqlfiddle.com/#!9/1b3907/10
使用IF
和ORDER BY
的最简单方法
SELECT *
FROM vehicle_type_master
ORDER BY IF(Vehicle_Type_ID ='20 FT',0,1),standard_volume asc
sqlfiddle:http://sqlfiddle.com/#!9/1b3907/9