有的时候需要在SQL里面加上distinck来过滤一些重复的记录,使用SQL比较好写,但是在Rails的API里面并没有找到DISTINCK的参数,于是google了一把,看到不少人有类似的需求,最后找到方案,整理如下:
1、使用:select
Item.find( :all, :select => 'DISTINCT fieldname1,filename2,filename3' ),这里就可以使用DISTINCT参数但是你可能很郁闷的发现,这
样select出来的结果并不完全符合您的要求或者预想,呵呵。
2、加上:group参数
前面说的,如果只有:select参数,这样出来的结果可能会让你郁闷的发现,并不是您的预期,原因是前面的:select会对
“fieldname1,filename2,filename3”做DISTINCT,所有不满足您的预期;
我们可以再加上group参数即可,类似语句如下:
Item.find( :all, :select => 'DISTINCT fieldname1,filename2,filename3' ,:group => 'fieldname1')
最后还要说下这个:select参数,他可以很好的提高性能,因为在Rails中的find会把所有字段都select出来,如果遇到大字
段会很影像性能的,所有在必要的时候,最好是用:select限制下要取出的列。
参考:
1、Using :select in Rails for Better Performance (这篇文章详细的说了使用select来提高性能)
2、说Mysql的distinct语句和group by,order by (这篇文章说了distinct、group by和order by的关系)
via:http://iceskysl.1sters.com/?action=show&id=297
分享到:
相关推荐
MySQL通常使用GROUPBY(本质上是排序动作)完成DISTINCT操作,如果DISTINCT操作和ORDERBY操作组合使用,通常会用到临时表.这样会影响性能. 在一些情况下,MySQL可以使用索引优化DISTINCT操作,但需要活学活用.本文涉及一个...
有这样的一个需求:select count(distinct nick) from user_access_xx_xx; 这条sql用于统计用户访问的uv,由于单表的数据量在10G以上,即使在user_access_xx_xx上加上nick的索引, 通过查看执行计划,也为全索引扫描...
完美解决distinct中使用多个字段的方法,完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法
oracle rownum和distinct
mysql中distinct用法【SQL中distinct的用法】.docx
EFCore查询不重复数据Distinct,根据两个字段排序
使用Distinct查询.rar使用Distinct查询.rar
主要介绍了MongoDB教程之聚合,MongoDB除了基本的查询功能之外,还提供了强大的聚合功能,这里主要介绍count、distinct和group,需要的朋友可以参考下
distinct的使用.docx
【DISTINCT】优化之MySQL官方文档翻译
wpf 文本框实现模糊匹配 主要是用了Popup 以及keyup事件博客说明地址https://blog.csdn.net/qq_42359838/article/details/106568785
如果我想知道颜值有哪些取值,所以希望从结果集中去掉重复的记录,加上distinct关键字,位置在select和字段列表之间。distinct是从结果集中筛选出唯
用Distinct在MySQL中查询多条不重复记录值,绝对的物有所值
sql中select语句中的distinct的用法
总计COUNT_DISTINCT 此扩展提供了COUNT(DISTINCT ...)的替代方法,该方法对于大量数据通常会以排序和不良性能而告终。 职能 有两个多态聚合函数,用于处理按值传递的固定长度数据类型(即,在64位计算机上最多为...
初级综合能力18版官方教材-可搜索复制版(smaller2,indistinct)最新版本的官方教材
用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 。 select distinct name from t1 能消除重复记录,但只能取一个字段,...
非常经典的网络抓包工具distinct(NetMon),可以设置任意过滤规则,界面易于操作。
首先对于MySQL的DISTINCT的关键字的一些用法: 1.在count 不重复的记录的时候能用到,比如SELECT COUNT( DISTINCT id ) FROM tablename;就是计算talbebname表中id不同的记录有多少条。 2,在需要返回记录不同...