Jon*_*Jon 1 sorting postgresql ruby-on-rails
我想通过评级DESC来排序.它适用于MySQL,但适用于PostgreSQL.我得到了不同的结果.
你可以在这里看到问题:http://www.vinderhimlen.dk/konkurrencer
我的控制器:
def sort_column
Konkurrancer.column_names.include?(params[:sort]) ? params[:sort] : "rating"
end
def sort_direction
%w[desc asc].include?(params[:direction]) ? params[:direction] : "desc"
end
Run Code Online (Sandbox Code Playgroud)
由于您的问题中缺少详细信息,因此不确定您的问题究竟是什么或者"无效".但至少有两个因素会影响排序,以至于你在MySQL和PostgreSQL中会得到不同的结果.
首先是整理.特别是如果你正在玩9.1 beta.最后我安装了MySQL(这是前一段时间,所以他们可能已经解决了这个问题),默认情况下整理为latin-1/swedish,而postgreSQL则为utf-8/english.
另一个是空值.如果内存服务,MySQL总是将这些放在最后.相比之下,PostgreSQL始终将它们放在btree索引的末尾,因此在订购asc时首先将它们放在最后,并在订购desc时首先放置它们.您可以通过最后使用nulls first/nulls排序来更改此行为.
在您的特定情况下,我的猜测是您想要的order by rating desc nulls last,而不是首先放置空值的默认行为.