我的问题是将以下 SQL 查询转换为 ActiveRecord Rails:
SELECT H1.*
FROM USERS H1
WHERE DAYS = (SELECT MAX(DAYS) FROM USERS H2
WHERE H1.COUNTRY = H2.COUNTRY
AND H1.NAME = H2.NAME
AND H1.MARKET = H2.MARKET
AND H1.TALL = H2.TALL)
在将其转换为 Rails ActiveRecord 时,我最大的问题是在同一个表上的相关子查询查询 - “USERS”和别名表名在 ActiveRecord 中是非法的。
Find_by_sql 也不适合我,因为它不能与其他 ActiveRecord 函数一起使用。
最佳答案
你可以这样写
User.select("view.*")
.from("User.group(:name, :country, :market, :tall)
.maximum(:days), :view)")
.where("days = ?", view.days)
看看#from
了解正在发生的事情的方法。
关于sql - Rails 相关子查询同表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24645808/