1
我有以下查询:查询数据时,如何使用rails进行分组以避免重复?
@items = AddressBook.select('email').where(:domain => 'hospital.com').
这个返回〜100电子邮件其中很多是重复的。我如何才能使用导轨获取唯一的电子邮件?
谢谢
我有以下查询:查询数据时,如何使用rails进行分组以避免重复?
@items = AddressBook.select('email').where(:domain => 'hospital.com').
这个返回〜100电子邮件其中很多是重复的。我如何才能使用导轨获取唯一的电子邮件?
谢谢
试试这个吗?
@items = AddressBook.select('DISTINCT email').where(:domain => 'hospital.com')
@items = AddressBook.select(:email).where(:domain => 'hospital.com').uniq
相同的SQL生成,但不同的语法
我想,以避免在数据库上这样做,因为我没有对电子邮件领域的指数,这将是非常繁重的?\ – AnApprentice
'DISTINCT'是一个非常标准的SQL语句。我敢打赌你的数据库可以处理它很好。试着用两种方法来查看控制台中的毫秒数,看看它们在相当有代表性的一组数据上会产生什么样的差异。 –
@AnApprentice,我第二个克里斯。 “where”条件显着缩小了结果集,因此DB SQL方法更好。作为一个经验法则,当我必须在SQL代码和Ruby代码之间进行选择时,我总是选择SQL代码。 –