如何根据条件在哪里获得查询输出的优先级

时间:2018-07-10 06:21:46

标签: mysql sql sql-order-by case-when

我有一个查询,如下所示

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显示应该首先出现的条件和其他行。

任何帮助表示赞赏

1 个答案:

答案 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

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