如何根据 where 条件获取查询的优先级输出

How can I get prioritize output of a query based on where condition

我有一个查询如下所示

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.

显示

感谢任何帮助

您可以将 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

可以使用 IFORDER 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