2014-09-19 41 views
0

如果我在像“红色”,“蓝色”和“绿色”值的“颜色”SQLite表中有一列,并使用ORDER BY Color,它会自动命令颜色按字母顺序排列。没有特别订购的SQLite ORDER BY

有什么方法可以指定颜色的顺序吗?举例来说,如果我指定:

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

得到的结果排序,以便与绿色行是第一,然后用红色的那些是第二个,等等?

举例来说,如果我有这样的表:

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

如果我做一个正常的 “选择汽车从AntiqueCars ORDER BY色彩,” 它会返回:

Thunderbird 
DeLorean 
380SL 
Mustang 

(虽然雷鸟和)

我希望能够使用“SELECT Car from AntiqueCars ORDER BY Color(Red,Green,Blue)”,并获得:

Mustang 
380SL 
Thunderbird 
DeLorean 

有什么办法可以做到这种排序的价值,通常不被识别为按字母或数字(或暂时)排序?

+0

可能重复[SQLite和由客户订单(http://stackoverflow.com/questions/3303851/sqlite-and-自定义顺序) – 2014-09-19 10:01:19

+0

谢谢 - 我被困在条款和花费时间谷歌搜索,但没有想到“自定义”类型的订购。我会等待,让mods按照他们的意愿标记它。也许这种不同的措辞会帮助其他人在未来找到它。 – Tango 2014-09-19 10:09:38

回答

1

您可以使用CASEORDER BY子句指定自定义排序:

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

完美!考虑到我在这个项目上整晚都在忙碌,这是我需要的最后一件事情,得到一个快速的答案是一个很大的帮助! – Tango 2014-09-19 10:14:42

+0

如果满足要求,你能接受答案吗? – Milen 2014-09-19 10:18:53

+0

对不起 - 以为我已经点击了。哎呀! – Tango 2014-09-19 10:23:09