Mysql 将rails where查询的结果用于另一个查询
我很好奇是否有一种简单的方法来存档此查询:Mysql 将rails where查询的结果用于另一个查询,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,我很好奇是否有一种简单的方法来存档此查询: SomeTable.where(value\u b:SomeTable.where(value\u a:1).拨动(:value\u b)) 例如,如果我们有: SomeTable |id | a | b | |1 | 1 | 2 | |2 | 2 | 2 | |3 | 3 | 3 | |4 | 4
SomeTable.where(value\u b:SomeTable.where(value\u a:1).拨动(:value\u b))
例如,如果我们有:
SomeTable
|id | a | b |
|1 | 1 | 2 |
|2 | 2 | 2 |
|3 | 3 | 3 |
|4 | 4 | 4 |
用户在系统中输入编号1
,我希望能够找到b
的值,其中a=1
,即2
。然后使用b
的此值查找具有此值的所有记录
因此,我希望能够使用1
并提取id为1和2的SomeTable
谢谢
SomeTable.joins("JOIN some_table as replica on replica.value_b = some_table.value_b")
.where(replica: {value_a: 1})
a_值是你的“a”值,要找到“b”值你可以加入我们,你可以发布准确的方案吗。请发布准确的模式。你发布的那个没有任何意义,因为
SomeTable.where(value\u a:1)
会给你与SomeTable.where(value\u b:SomeTable.where(value\u a:1).pull(:value\u b))
对不起,我认为我不能发布确切的模式,它太大了@LarsonB,SomeTable。其中(值a:1)
不提供id为2的SomeTable
,将Pull
更改为select
,ActiveRecord将使用子查询。
SomeTable.where("b in (SELECT b FROM some_tables where a = ?)", a_value)