Ruby on rails 在两个表中获得最大值
我正在尝试从两个不同的表中获得特定用户的最高分数 例如:Ruby on rails 在两个表中获得最大值,ruby-on-rails,mongodb,Ruby On Rails,Mongodb,我正在尝试从两个不同的表中获得特定用户的最高分数 例如: Table 1 {user=>"Dave", score=>8} {user=>"Dave", score=>2} {user=>"Frank", score=>5} Table 2 {user=>"Bill", score=>5} {user=>"Dave", score=>3} {user=>"Frank", score=>7} 我想要得到的结果是每个用户的最
Table 1
{user=>"Dave", score=>8}
{user=>"Dave", score=>2}
{user=>"Frank", score=>5}
Table 2
{user=>"Bill", score=>5}
{user=>"Dave", score=>3}
{user=>"Frank", score=>7}
我想要得到的结果是每个用户的最高分数,按分数降序排列
戴夫:8
弗兰克:7
比尔:5
我想也许我需要使用map/reduce,但我不太确定
我尝试使用散列来迭代结果,但当我使用名称作为键时,值被覆盖
谢谢
Andrew下面是一个如何在Ruby端实现排序的示例:
> unsorted = [{:user=>"Bill", :score=>5}, {:user=>"Dave", :score=>3}, {:user=>"Frank", :score=>7}]
=> [{:user=>"Bill", :score=>5}, {:user=>"Dave", :score=>3}, {:user=>"Frank", :score=>7}]
> unsorted.sort_by { |r| r[:score] }.reverse
=> [{:user=>"Frank", :score=>7}, {:user=>"Bill", :score=>5}, {:user=>"Dave", :score=>3}]
您可以在sql查询中通过在name上连接两个表来实现这一点
SELECT
CASE
WHEN Table1.score >= Table2.score THEN Table1.score
ELSE Table2.score
END AS top_score, name
FROM Table1 join Table2 on Table1.name=Table2.name.