Mysql 在单个查询中捕获一列值最高的记录?

Mysql 在单个查询中捕获一列值最高的记录?,mysql,ruby-on-rails,Mysql,Ruby On Rails,我有一张像这样的桌子: | id | fk1 | fk2 | version | | 1 | 1 | 1 | 1 | | 2 | 1 | 1 | 2 | | 3 | 1 | 1 | 3 | 手头有fk1和fk2的值,我正在尝试获取版本值最高的记录。目前我正在做的是: version = Project.where("fk1= ? AND fk2= ?", params.require(:fk1), params.require(

我有一张像这样的桌子:

| id | fk1 | fk2 | version |
|  1 |  1  |  1  |    1    |
|  2 |  1  |  1  |    2    |
|  3 |  1  |  1  |    3    |
手头有fk1和fk2的值,我正在尝试获取版本值最高的记录。目前我正在做的是:

version = Project.where("fk1= ? AND fk2= ?", params.require(:fk1), params.require(:fk2)).maximum(:version)
@project = Project.find_by_fk1_and_fk2_and_version(params.require(:fk1), params.require(:fk2), version)
这让我得到了正确的记录,但是我必须执行两个查询,这在理论上看起来非常简单,但是在尝试了许多不同的事情之后,我没有运气用一个查询来完成这项工作。我的设想是:

version = Project.where("fk1= ? AND fk2= ? AND max(version)", params.require(:fk1), params.require(:fk2))

或者别的什么。

rails的方法是

Project.where(fk1: params.require(:fk1), fk2: params.require(:fk2)).
  order('version desc').first
这将转换为sql查询,如:

SELECT * FROM projects WHERE fk1 = "fk1" AND fk2 = "fk2" ORDER BY version DESC LIMIT 1;