我需要查询db唯一值和另一列的最大值。
例如:
:name => "some_name_1", :version => 10, :other_columns...
:name => "some_name_1", :version => 11, :other_columns...
:name => "some_name_2", :version => 15, :other_columns...
:name => "some_name_3", :version => 18, :other_columns...
我需要的是,如果名称多次显示,则查询应仅返回具有最新版本的名称(更高版本号)
所以看起来应该是这样的:
:name => "some_name_1", :version => 11, :other_columns...
:name => "some_name_2", :version => 15, :other_columns...
:name => "some_name_3", :version => 18, :other_columns...
请注意:name => "some_name_1", :version => 10, :other_columns...
那些未在查询中显示的那些,因为已存在具有相同名称的记录,并且版本号为。
有什么想法吗?
答案 0 :(得分:0)
Table.select("tables.name, MAX(tables.version)").group("tables.name")
如果你还需要获得other_columns,你必须向它们申请一些聚合函数(就像使用MAX聚合函数的版本列一样。或者你可以在中指定其他列) group 子句以避免使用聚合函数(仅当 name 列的每个相同值的每个其他列的值相同时)
Table.select("tables.name, MAX(tables.version), tables.other_column1, tables.other_column2").group("tables.name, tables.other_column1, tables.other_column2")