如何根据 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
可以使用 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
我有一个查询如下所示
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
可以使用 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