【问题标题】:SQLite ORDER BY Without Special OrderingSQLite ORDER BY 无特殊排序
【发布时间】:2014-09-19 09:58:16
【问题描述】:

如果我在 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(Red, Green, Blue)”并获得:

Mustang
380SL
Thunderbird
DeLorean

有什么方法可以对通常不被识别为按字母或数字(或时间)排序的值进行这种排序?

【问题讨论】:

  • SQLite and custom order by 的可能重复项
  • 谢谢 - 我被条款困住了,花了一些时间在谷歌上搜索,但没有想到订购类型的“自定义”。我会等待,让模组按照他们的意愿标记它。也许这里的不同措辞会帮助其他人在未来找到它。

标签: sqlite


【解决方案1】:

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

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

【讨论】:

  • 完美!考虑到我在这个项目上彻夜未眠,而这是我最不需要的事情之一,快速获得答案是一个很大的帮助!
  • 如果满足要求,您能接受答案吗?
猜你喜欢
  • 1970-01-01
  • 2011-05-25
  • 2014-03-25
  • 1970-01-01
  • 2014-08-28
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
相关资源
最近更新 更多