我有一个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个,但它只选择项目名称而不记录其他数据。
答案 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")