拼音 - 活动记录 - 根据特定列值每'group'选择一条记录



我有这个表:

用户

<表类>名称角色tbody><<tr>梅森工程师杰克逊工程师梅森主管杰克逊主管格雷厄姆工程师格雷厄姆工程师

如果我想在纯SQL中这样做,我必须使用GROUP BY。

SELECT Name, MAX(Role) FROM User GROUP BY Name
因此,一种方法是对基本连接执行此SQL语句。
ActiveRecord::Base.connection.execute("SELECT Name, MAX(Role) FROM User GROUP BY Name")

这将提供您所需要的数据,尽管它不会作为ActiveRecord模型返回。如果你需要这些模型,那么我会使用find_by_sql,并做一个内部连接来提供记录。

User.find_by_sql("SELECT User.* FROM User INNER JOIN (SELECT Name AS n, MAX(Role) AS r FROM User GROUP BY Name) U2 WHERE Name = U2.n AND Role = U2.r")

不幸的是,这将为Graham提供两个记录。

相关内容

  • 没有找到相关文章

最新更新