相关文章推荐
帅呆的篮球  ·  子查詢 (SQL Server) - ...·  3 月前    · 
豪爽的热水瓶  ·  How to export a Hive ...·  2 月前    · 
沉着的西红柿  ·  Docker: “build” ...·  1 年前    · 
俊秀的勺子  ·  ruby on rails - ...·  2 年前    · 
飘逸的鞭炮  ·  .net core ...·  2 年前    · 
飘逸的打火机  ·  Oracle中的instr()函数 ...·  2 年前    · 
憨厚的黑框眼镜  ·  spring cloud config ...·  2 年前    · 

rails select distinct on expressions must match initial order by expressions

这个问题出现在Rails中,通常是因为使用了PostgreSQL数据库的DISTINCT ON语句,但是没有正确设置ORDER BY子句。这个错误的原因是DISTINCT ON必须按初始排序表达式进行排序,以便正确去重。

解决这个问题的方法是,确保在DISTINCT ON语句中指定的表达式与ORDER BY子句中指定的表达式匹配。在Rails中,可以使用ActiveRecord的order方法来设置ORDER BY子句。例如:

Model.select("DISTINCT ON (column_name) *").order("column_name DESC")

这将返回一个按照"column_name"列去重的结果集,并按照"column_name"列的降序排序。

需要注意的是,在使用DISTINCT ON语句时,必须将其指定为select方法的参数,而不是作为where方法的参数。因为DISTINCT ON与WHERE子句可能会互相冲突。

希望这个回答对你有帮助。

  •