.distinct不返回唯一条目

时间:2016-11-08 02:17:02

标签: ruby-on-rails postgresql ruby-on-rails-4 activerecord

我有一个Projects表,在该表中,可能有多个具有相同名称的同一个项目,但created_at月份会有所不同。我试图在表格中选择每个项目的最新记录。使用select作品,然而我需要整个记录,这样我就可以遍历记录并打印出不同的属性,例如价格或不是。

我试过了:

Project.distinct(:project_name) - 打印所有记录(为了检查这一点,我复制了项目名称并进行了查找,所有具有相同名称的项目仍会打印出来)

Project.order(project_name :: asc,created_at :: desc).uniq(:project_name) - 与上面的结果相同

Project.select(:project_name).distinct - 每次只拉1个,但它只选择项目名称而不记录其他数据。

1 个答案:

答案 0 :(得分:3)

这是DISTINCT ON来救援的情况。

这应该有效:

Project.select("DISTINCT ON (project_name) *").order("project_name, created_at DESC")

仅选择特定列指定它们而不是*

Project.select("DISTINCT ON (project_name) project_name, created_at, price").order("project_name, created_at DESC")