【问题标题】:Get data from table for each element IN an array从表中获取数组中每个元素的数据
【发布时间】:2014-01-30 14:52:39
【问题描述】:

我想为数组中的每个值获取数据库中的前 10 条记录。

使用IN 运算符一次获取所有记录更适合我,因为我可以轻松地将它们分组,但问题是对于数组中的每个值,我得到 100 条记录,我只需要前 10 条记录。我怎样才能得到这些?

这是我现在使用的,但下面的代码从表中获取 100 条记录,用于数组中的每个元素。

arr = [1, 2, 3]

Result.where('date(created_at) = ? AND word_id IN (?)', Date.today - 1.day, arr)

o = _ 
o.group(:value).count

谢谢

【问题讨论】:

  • 能否详细说明您的问题
  • 你对“第一”10行的定义是什么?
  • 另外,RDBMS 是什么?

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rails-activerecord


【解决方案1】:

正在寻找类似的东西

arr = [1, 2, 3]

result = arr.collect { |i| result << Result.where('date(created_at) = ? AND word_id IN (?)', Date.today - 1.day, i).order(:id).limit(10) }.flatten

result = arr.map { |i| result << Result.where('date(created_at) = ? AND word_id IN (?)', Date.today - 1.day, i).order(:id).limit(10) }.flatten

得到计数

result.count

【讨论】:

  • 它适用于具有 2、3 个元素的数组,但是如果数组中有 1000 个或更多元素,你会怎么做。此外,对列的分组和计数将为您提供重复项。感谢您的努力。
猜你喜欢
  • 2021-06-29
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 2021-10-04
  • 2011-07-08
相关资源
最近更新 更多