Ruby on rails 博士后排序问题

Ruby on rails 博士后排序问题,ruby-on-rails,postgresql,sorting,Ruby On Rails,Postgresql,Sorting,我想按等级DESC排序。它适用于MySQL,但适用于PostgreSQL。我得到了一个不同的结果 您可以在这里看到问题: 我的控制器: def sort_column Konkurrancer.column_names.include?(params[:sort]) ? params[:sort] : "rating" end def sort_direction %w[desc asc].include?(params[:direction]) ? params[

我想按等级DESC排序。它适用于MySQL,但适用于PostgreSQL。我得到了一个不同的结果

您可以在这里看到问题:

我的控制器:

  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

不确定你的问题到底是什么或者它如何“不起作用”,因为你的问题缺乏细节。但至少有两个因素会影响排序,在MySQL和PostgreSQL中会得到不同的结果

第一个是。如果你在玩9.1测试版。我上一次安装MySQL(这是很久以前的事了,所以他们可能已经修复了这个问题),它默认情况下是按拉丁语1/瑞典语排序的,而PostgreSQL则是按utf-8/英语排序的

另一个是空值。如果内存可用,MySQL总是将这些放在最后。相比之下,PostgreSQL始终将它们放在btree索引的末尾,因此在对asc排序时将它们放在最后,在对desc排序时将它们放在第一位。您可以通过使用排序来更改此行为


在您的特定情况下,我猜您希望通过最后评分desc nulls来排序,而不是将nulls放在第一位的默认行为。

除了评分为0的行为之外,它似乎对我来说工作正常。您是否有可能向我们提供您正在使用的SQL,以及它所运行的数据的一些信息?