我有一个 TraitQuestion 模型,它有许多特征或答案 - 每个特征或答案都有一个值,例如 1、2、3 或 -3105(对于上述任何一个)。我无法更改这些值,因为外部 API 需要它们。
我想按值对它们进行排序,但是当我这样做时,-3105 的答案显示在顶部,即使它说“以上都不是”:
Answer 4 = -3105
Answer 1 = 1
Answer 2 = 2
Answer 3 = 3
Run Code Online (Sandbox Code Playgroud)
关于我们如何订购它的任何想法,以便它
1
2
3
-3105?
Run Code Online (Sandbox Code Playgroud)
我对 SQL 很陌生,但似乎我应该能够做这样的事情:
@trait_question.traits.order('CASE WHEN value AS int > 0 then 1 ELSE 0 END')
Run Code Online (Sandbox Code Playgroud)
但这不起作用。有什么想法可以调整顺序调用 SQL 以便按正确的顺序对它们进行排序吗?
编辑:这是通过 Amazon AWS 的 Postgresql 9.4.1
我不知道这是否适合你,但试试这个:
@trait_question.traits.order('ABS(value)')
Run Code Online (Sandbox Code Playgroud)
在ABS将负值更改为每次正因此取绝对值。如果您的数据库字段是,string那么您可以按照为他工作的 Tom 的建议进行操作:
@trait_question.traits.order('ABS(CAST(value AS int))')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3446 次 |
| 最近记录: |