Ver 14.14 Distrib 5.1.73
activerecord (4.1.14)
我有一个属于贷方和借方的交易模型。我想在一个SQL查询中找到机构交易的所有uniq交易对手。下面的查询有效,但只是因为我扁平化了unique-ify SQL查询后的数组:
Trade.where("borrower_id = :id OR lender_id = :id", id: institution.id).uniq.pluck(:lender_id, :borrower_id).flatten.uniq
(我知道这包括机构本身,因此我们在使用[1,2,3,4] - [1]
)
但我想做的是使用Group By
子句或其他东西,以便我的SQL查询处理flatten.uniq
部分。
以下内容不起作用,因为它返回lender_id
和borrower_id
的唯一组合的嵌套数组:
Trade.where("borrower_id = :id OR lender_id = :id", id: institution.id).group(:lender_id, :borrower_id).uniq.pluck(:lender_id, :borrower_id)
=> [[1,2], [1,3], [2,3]]
我想要一个只有JUST唯一ID的平面数组:[1,2,3]
有什么想法吗?谢谢!
答案 0 :(得分:0)
我不明白你在尝试什么,或者为什么你想在没有任何聚合函数的情况下包含GROUP BY子句。
FWIW,有效查询可能如下所示......
SELECT DISTINCT t.lender_id
, t.borrower_id
FROM trades t
WHERE 28 IN(t.borrower_id,t.lender_id);