将 distinct 与另一个条件相结合
Combining distinct with another condition
我正在将 Rails 3.2 应用程序迁移到 Rails 5.1(不早于时间),我遇到了一个 where 查询问题。
适用于 Rails 3.2 的代码如下所示,
sales = SalesActivity.select('DISTINCT batch_id').where('salesperson_id = ?', sales_id)
sales.find_each(batch_size: 2000) do |batchToProcess|
.....
当我在 Rails 5.1 下 运行 这段代码时,当它尝试 for_each、
时似乎会导致以下错误
ArgumentError (Primary key not included in the custom select clause):
我想为给定的 salesperson_id 得到一个唯一的 batch_ids 数组(?),然后我可以遍历它,就像使用 Rails 3.2 一样。
由于我不明白的原因,看起来我可能需要包含整个记录才能遍历(我的想法是我需要包含主键)?
我正在尝试重新措辞 'where',并尝试了以下方法,
sales = SalesActivity.where(salesperson_id: sales_id).select(:batch_id).distinct
但是,组合的 ActiveRecordQuery 将 DISTINCT 应用于 salesperson_id 和 batch_id - 即 #FAIL1
此外,因为我仍在使用 select(让 distinct 知道我想成为哪一列 'distinct')它也仍然只有 select 是 batch_id 列当然,我试图避免 - 那是 #FAIL2
我如何有效地提取给定 salesperson_id 的所有唯一 batch_id 记录,然后我可以 for_each 它们?
谢谢!
怎么样:
SalesActivity.where(salesperson_id: sales_id).pluck('DISTINCT batch_id')
可能需要更改 where
和 pluck
的顺序,但是 pluck 应该 return [=19] 的数组=]
我正在将 Rails 3.2 应用程序迁移到 Rails 5.1(不早于时间),我遇到了一个 where 查询问题。
适用于 Rails 3.2 的代码如下所示,
sales = SalesActivity.select('DISTINCT batch_id').where('salesperson_id = ?', sales_id)
sales.find_each(batch_size: 2000) do |batchToProcess|
.....
当我在 Rails 5.1 下 运行 这段代码时,当它尝试 for_each、
时似乎会导致以下错误ArgumentError (Primary key not included in the custom select clause):
我想为给定的 salesperson_id 得到一个唯一的 batch_ids 数组(?),然后我可以遍历它,就像使用 Rails 3.2 一样。
由于我不明白的原因,看起来我可能需要包含整个记录才能遍历(我的想法是我需要包含主键)?
我正在尝试重新措辞 'where',并尝试了以下方法,
sales = SalesActivity.where(salesperson_id: sales_id).select(:batch_id).distinct
但是,组合的 ActiveRecordQuery 将 DISTINCT 应用于 salesperson_id 和 batch_id - 即 #FAIL1
此外,因为我仍在使用 select(让 distinct 知道我想成为哪一列 'distinct')它也仍然只有 select 是 batch_id 列当然,我试图避免 - 那是 #FAIL2
我如何有效地提取给定 salesperson_id 的所有唯一 batch_id 记录,然后我可以 for_each 它们?
谢谢!
怎么样:
SalesActivity.where(salesperson_id: sales_id).pluck('DISTINCT batch_id')
可能需要更改 where
和 pluck
的顺序,但是 pluck 应该 return [=19] 的数组=]