Ruby on rails 在带有RoR和ActiveRecord的where中使用多个列名

Ruby on rails 在带有RoR和ActiveRecord的where中使用多个列名,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我想使用活动记录生成以下sql WHERE (column_name1, column_name1) IN (SELECT ....) 我不知道如何做这是活动记录 WHERE (column_name1, column_name1) IN (SELECT ....) 到目前为止我已经试过了 where('column_name1, column_name2' => {}) where([:column_name1, :column_name2] => {}) 这是我要创建的完整

我想使用活动记录生成以下sql

WHERE (column_name1, column_name1) IN (SELECT ....)
我不知道如何做这是活动记录

WHERE (column_name1, column_name1) IN (SELECT ....)
到目前为止我已经试过了

where('column_name1, column_name2' => {})
where([:column_name1, :column_name2] => {})
这是我要创建的完整查询

SELECT a, Count(1) 
            FROM   table 
            WHERE  ( a, b ) IN (SELECT a, 
                                    Max(b) 
                                    FROM   table 
                                    GROUP  BY a) 
            GROUP  BY a 
            HAVING Count(1) > 1)
我已经为子查询编写了一个范围

提前感谢。

选择中的列\u name1、列\u name1。。。。不是sql中的有效构造;所以它也不能在活动记录中完成

在SQL中实现这一点的有效方法是:

WHERE column_name1 IN (select ....) OR column_name2 IN (select ...)
同一查询可直接在活动记录中使用:

where("column_name1 IN (select ...) OR column_name2 IN (select...)")
避免重复:

selected_values = select ...
where("column_name IN ? OR column_name2 in ?", selected_values, selected_values)

所以我决定使用内部连接来获得相同的功能。这是我的解决办法

  select(:column1, 'Count(1)').
  joins("INNER JOIN (#{subquery.to_sql}) AS table2 ON   
  table1.column1=table2.column1
  AND table1.column2=table2.column2")

您能写出您想要创建的完整语句吗?编辑原始答案以包含完整语句,其中列\名称1,列\名称1位于SELECT。。。。是有效的,这与使用两列进行内部联接相同。我在解决方案中添加了一个答案