mysql - PG::InvalidColumnReference:按关联表排序时出现错误

标签 mysql ruby-on-rails

我正在尝试根据每个(雇主)拥有的关联记录(雇员)的数量对表(雇主)进行排序/排序。

以下代码适用于 Rails 控制台,其中雇主记录按预期按员工数量排序:

Employer.joins(:employees).group(:id).order('count(employees.id) ASC')

但是,当实际尝试在开发中运行它时,我收到此错误:

PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list

虽然我可以使用“sort_by”,但我更希望结果采用 ActiveRecord::Relation 格式。任何帮助将不胜感激。

最佳答案

通过将 distinct 添加到表达式中,我能够在控制台中重现此错误: 在你的情况下,它将是: Employer.distinct.joins(:employees).group(:id).order('count(employees.id) ASC')

错误消息表明您必须将排序依据 (count(employees.id)) 的表达式添加到选择列表中。 这可以通过显式指定选择列来实现:

Employer.select('employers.id, count(employees.id)').joins(:employees).group(:id).order('count(employees.id) ASC')

关于mysql - PG::InvalidColumnReference:按关联表排序时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47546842/

相关文章:

mysql - 在Python中将CSV数据加载到MySQL中

ruby-on-rails - Rails 4 Assets 管道丢失供应商 Assets

ruby-on-rails - 如何在 Controller 中调用 rake 任务?

ruby-on-rails - database.yml 文件中的 Postgres 数据库用户名

当我将 SUM 和 COUNT 与多个 INNER JOINS 一起使用时,MySQL 如何不包含重复行?

javascript - JQuery、PHP、MYSQL、DataTable 无法搜索

php - 无法使用(PHP、AJAX、JQ)将数据插入 MySQL 数据库

ruby-on-rails - 在没有互联网连接的情况下自行安装 RVM

ruby-on-rails - 如何禁用所有事件记录验证?

php - Woocommerce - 使用特定属性列出产品