当前位置: 首页 > 面试题库 >

使用activerecord时,如何根据字段的最高值选择记录?

巫马星雨
2023-03-14
问题内容

我遇到了我不希望做的事情,我不知道该如何处理活动记录(实际上我无法确切地说出如何使用sql来做)。我想根据某个字段的最高值以及其他一些条件来选择记录。以下是一些伪造的东西,它们解释了我的情况。给出以下记录:

id:1 | name:recipe1 | saved:true  | revision:1
id:2 | name:recipe1 | saved:false | revision:2
id:3 | name:recipe1 | saved:true  | revision:3
id:4 | name:recipe1 | saved:false | revision:4
id:5 | name:recipe2 | saved:true  | revision:1
id:6 | name:recipe2 | saved:true  | revision:2
id:7 | name:recipe3 | saved:false | revision:1
id:8 | name:recipe4 | saved:true  | revision:1

我希望能够获取已保存的修订版本号最高的记录。这意味着ID为:3、6和8的记录

我的第一个本能是做某种子查询,该子查询在修订之类的东西上获得MAX。除此之外,我真的不知道该怎么做,因此我们将不胜感激。

编辑:

这是我想要的SQL:

SELECT id, name, MAX(revision) as "revision" FROM revisions WHERE saved = 1 GROUP BY name

现在,有什么合理的方法可以使用ActiveRecord做到这一点吗?


问题答案:
Revision.maximum(:revision,:conditions => ["saved=1"],:group => 'name')


 类似资料:
  • 我要跟着SQL桌子 我需要从这个表中选择所有记录,其中值是25的和。因此,对于键A,应该显示ID为1和2的记录。对于键B,记录ID为3,对于键C,记录ID应为5。 我正在尝试类似的东西,但这是给一个错误,仍在尝试。 有什么建议可以得到想要的套装吗? 编辑:添加服务器名称。

  • 问题内容: 我正在使用MySQL,但是我认为这是一个基本的SQL问题。 除了举个例子,我不知道还有什么要问的。 假设我的表格中有以下数据: 如何获得单个Foreign_key的每个密钥的最新信息? 例如,假设我想要4的Foreign_key最新,那么我想要的结果将是: 我将使用什么SQL来达到这个结果? 顺便说一句,我意识到这并不是大多数人选择存储数据的第一种方式,但是我有自己的理由。 即,这些值

  • 我试图通过根据场值提升_score来摆脱弹性搜索中的排序。这是我的场景: 我的文档中有一个字段:应用日期。这是自EPOC以来经过的时间。我希望具有更大应用日期(最近)的记录具有更高的分数。 如果两个文档的分数相同,我想在另一个字符串类型的字段上对它们进行排序。说“状态”是另一个可以有值的字段(可用、进行中、关闭)。所以,具有相同应用程序日期的文档应该根据状态_score。可用应该有更多的分数,进行

  • 问题内容: 在我有一个像这样的表的情况下: 我只想为每个工作人员(用staff_id表示)选择一个记录,列出他们的主要技能,用mainskill中的(1)表示。如果没有主要技能,我想退还该工作人员的任何技能记录。例如: 查询应返回: 我尝试了分组,DISTINCT等的各种组合,但无法获得我想要的输出。任何帮助表示赞赏。 问题答案: SQL Server 2005+,使用CTE: SQL Serve

  • 问题内容: 我似乎找不到或编写一个选择默认值的sqlquery (我不认为我可以在phpmyadmin中生成它供我复制) 我试图选择它,就好像它是一条记录,但无济于事… 问题答案: 或者我认为更好: 更新-更正 正如@Jeff Caron所指出的,只有在中至少有1行时,上述内容才有效。如果即使分组表没有行也要得到结果,则可以使用以下命令:

  • 问题内容: 我想从MySQL的某个特定字段最小值的表中选择数据,我已经尝试过了: 请帮忙吗? 问题答案: 这将为您提供在所有记录中具有最低价格的结果。 SQLFiddle演示