没有特殊订购的SQLite ORDER BY

时间:2014-09-19 09:58:16

标签: sqlite

如果我在SQLite表中有一个像“Color”这样的列,其值为“Red”,“Blue”和“Green”,并且使用ORDER BY Color,它会自动按字母顺序排列颜色。

有没有办法指定颜色的顺序?例如,如果我指定:

ORDER BY Color ('Green', 'Red', 'Blue')

要获得排序结果,那么首先是绿色的行,然后是红色的行是第二个,依此类推?

例如,如果我有这个表:

Car           Color 
-----------   ----
Mustang       Red
Thunderbird   Blue
DeLorean      Blue
380SL         Green

如果我做一个正常的“SELECT Car FROM AntiqueCars ORDER BY Color”,它会返回:

Thunderbird
DeLorean
380SL
Mustang

(虽然Thunderbird和DeLorean最终可能会被交换。)

我希望能够使用“SELECT Car FROM AntiqueCars ORDER BY Color(红色,绿色,蓝色)”,并获得:

Mustang
380SL
Thunderbird
DeLorean

有没有办法使用通常无法按字母顺序或数字(或暂时)可排序的值进行此类排序?

1 个答案:

答案 0 :(得分:1)

您可以在CASE子句中使用ORDER BY来指定自定义顺序:

SELECT Car  
FROM AntiqueCars  
ORDER BY CASE WHEN Color = 'red' THEN 1 WHEN Color = 'green' THEN 2 ELSE 3 END