sql - Rails 相关子查询同表

标签 sql ruby-on-rails ruby oracle activerecord

我的问题是将以下 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/

相关文章:

ruby-on-rails - 带有 Rails 的 SQL 服务器

javascript - MiniMagick::错误失败:

ruby-on-rails - Ruby 2 关键字参数和 ActionController::Parameters

sql - 增量比较 Oracle 中两个表之间的多个值集或列表

mysql - SQL中两个组成行的一列之间的区别

php - MySQL 多个重复行 - 只返回一个

ruby-on-rails - 为什么 Pry 不能在 Heroku 的控制台中运行?

ruby - 在 Ruby 中重新分配常量时抛出异常?

ruby-on-rails - 如何遍历 CSS 类的子类?

sql - 使用 JOIN 获取 DISTINCT 记录