`
Hooopo
  • 浏览: 334799 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DISTINCT in ActiveRecord

    博客分类:
  • SQL
阅读更多

有的时候需要在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中索引优化distinct语句及distinct的多字段操作

    MySQL通常使用GROUPBY(本质上是排序动作)完成DISTINCT操作,如果DISTINCT操作和ORDERBY操作组合使用,通常会用到临时表.这样会影响性能. 在一些情况下,MySQL可以使用索引优化DISTINCT操作,但需要活学活用.本文涉及一个...

    分析MySQL中优化distinct的技巧

    在MySQL数据库中,优化`DISTINCT`操作是一个关键的性能提升策略,特别是在处理大量数据时。上述场景中,用户遇到了一个问题:对一个10G以上的单表`user_access_xx_xx`执行`SELECT COUNT(DISTINCT nick)`以统计唯一...

    mysql中distinct用法【SQL中distinct的用法】.docx

    MySQL 中 DISTINCT 用法详解 MySQL 中的 DISTINCT 关键字用于返回唯一不同的值,避免重复值的出现。当我们在查询表中数据时,可能会遇到重复值的情况,这时使用 DISTINCT 关键字可以帮助我们返回唯一的值。 ...

    使用Distinct查询.rar

    WHERE department IN (SELECT department FROM employees GROUP BY department HAVING COUNT(*) > 1); ``` 这个查询不需要使用`DISTINCT`,但同样能获取所需信息。 总结 `DISTINCT`是SQL中用于获取唯一数据的重要...

    完美解决distinct中使用多个字段的方法

    完美解决distinct中使用多个字段的方法,完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法

    distinct的使用.docx

    在SQL语言中,`DISTINCT`关键字是一个非常重要的部分,特别是在数据检索时,它帮助我们去除结果集中的重复行,确保返回的每一行都是唯一的。本文将深入探讨`DISTINCT`在Oracle数据库中的使用,以及如何与其他SQL元素...

    oracle rownum和distinct

    "Oracle 中的 ROWNUM 和 DISTINCT" Oracle 中的 ROWNUM 和 DISTINCT 是两个非常重要的关键词,它们在查询数据时发挥着至关重要的作用。然而,许多开发者在使用这两个关键词时,却常常会遇到一些不太理解的地方,...

    EFCore查询不重复数据Distinct.docx

    `Distinct()`方法是C# LINQ中用于去除重复元素的关键操作,而在EFCore中,它可以应用于数据库查询来过滤掉重复记录。 首先,让我们深入理解`Distinct()`方法。在C#中,`Distinct()`方法通过比较元素的默认等价关系...

    【DISTINCT】优化之MySQL官方文档翻译

    ### DISTINCT优化之MySQL官方文档翻译解析 #### 一、引言 在数据库查询操作中,经常需要使用`DISTINCT`关键字来去除重复记录,确保结果集中的每一条记录都是唯一的。然而,在某些场景下,使用`DISTINCT`可能会导致...

    MongoDB教程之聚合(count、distinct和group)

    在本教程中,我们将深入探讨MongoDB中的三个关键聚合操作:`count`、`distinct`和`group`。 1. `count` 函数: `count` 方法用于计算集合中符合特定条件的文档数量。在MongoDB中,你可以直接调用`db.collection....

    23.Oracle的distinct关键字1

    Oracle数据库中的`DISTINCT`关键字是一个非常重要的SQL查询语句组成部分,它用于去除查询结果中的重复行,确保返回的每一条记录都是唯一的。在本例中,我们将通过创建一个名为`T_GIRL`的超女基本信息表,并插入一些...

    django queryset 去重 .distinct()说明

    for contact in contacts: house = house | contact.house_set.all() return house.distinct() 合并出来的queryset,再去重。 补充知识:Python——深入理解urllib、urllib2及requests(requests不建议使用?)

    select distinct用法

    select distinct用法 在SQL中,SELECT语句中的DISTINCT关键字的用法是一个非常重要的知识点。DISTINCT关键字的主要用途是去除重复记录,只保留唯一的记录。但是,DISTINCT关键字的使用有一些限制和注意事项。 首先...

    用Distinct在MySQL中查询多条不重复记录值,绝对的物有所值

    今天,我们将深入探讨如何使用`DISTINCT`关键字在MySQL中查询多条不重复记录值,这不仅是一种实用技能,也是提升数据处理效率的关键所在。 ### `DISTINCT`关键字详解 `DISTINCT`关键字在SQL查询中扮演着一个至关...

    Indistinct.rar

    wpf 文本框实现模糊匹配 主要是用了Popup 以及keyup事件博客说明地址https://blog.csdn.net/qq_42359838/article/details/106568785

    小度写范文【SQL中distinct的用法】mysql中distinct用法模板.docx

    在SQL查询中,`DISTINCT`关键字是一个非常重要的部分,它允许我们从结果集中去除重复的行或特定列的值。在MySQL中,`DISTINCT`的使用方式和功能与其他SQL数据库系统(如SQL Server、Access等)大体相同,但有一些...

    小度写范文【SQL中distinct的用法】mysql中distinct用法模板.pdf

    在SQL查询中,`DISTINCT`关键字是一个非常重要的部分,它允许我们从查询结果中去除重复的记录,只返回唯一的、不同的值。在MySQL中,`DISTINCT`的使用方式非常灵活,可以从单个列到多个列进行操作,也可以与聚合函数...

    Ruby on Rails中的ActiveRecord编程指南

    ### Ruby on Rails中的ActiveRecord编程指南 #### 一、引言 在Ruby on Rails框架中,ActiveRecord是一种用于实现数据库抽象层的对象关系映射(ORM)工具。它为开发人员提供了一种简单而强大的方式来处理数据库记录...

    Distinct(NetMon)很好用的网络抓包工具

    Distinct(NetMon)是一款在IT领域中广泛应用的网络抓包工具,因其强大的功能和友好的用户界面而备受赞誉。网络抓包,也被称为网络嗅探,是网络分析的基础,它允许技术人员捕获在网络中传输的数据包,以便进行故障...

Global site tag (gtag.js) - Google Analytics