如果我在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
有没有办法使用通常无法按字母顺序或数字(或暂时)可排序的值进行此类排序?
答案 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