`

Rails中查询mysql的一点技巧

阅读更多
ActiveRecode允许直接调用mysql的一些语法。这样一些例如sum avg count的mysql语法就可以非常方便的得以表达。

示例如下:
Person.average('age') 
# => 35.8


支持的方法如下:

  1. # average
  2. # calculate
  3. # count
  4. # maximum
  5. # minimum
  6. # sum


求最小值通过类似group by的语法:
      values = Person.maximum(:age, :group => 'last_name')
      puts values["Drake"]
      => 43

      drake  = Family.find_by_last_name('Drake')
      values = Person.maximum(:age, :group => :family) # Person belongs_to :family
      puts values[drake]
      => 43

      values.each do |family, max_age|
      ...
      end


其中允许的参数包括:
  1.     * :conditions - 和Finder语法一样,例如"administrator = 1" or [ "user_name = ?", username ].
  2.     * :include: Eager loading, see Associations for details. Since calculations don‘t load anything, the purpose of this is to access fields on joined tables in your conditions, order, or group clauses.
  3.     * :joins - An SQL fragment for additional joins like "LEFT JOIN comments ON comments.post_id = id". (Rarely needed). The records will be returned read-only since they will have attributes that do not correspond to the table‘s columns.
  4.     * order - 用于排序 "created_at DESC, name" (really only used with GROUP BY calculations).
  5.     * :group - 分组 Uses the GROUP BY SQL-clause.
  6.     * :select - By default, this is * as in SELECT * FROM, but can be changed if you for example want to do a join, but not include the joined columns.
  7.     * :distinct - Set this to true to make this a distinct calculation, such as SELECT COUNT(DISTINCT posts.id) …


示例如下:
  Person.calculate(:count, :all) # The same as Person.count
  Person.average(:age) # SELECT AVG(age) FROM people...
  Person.minimum(:age, :conditions => ['last_name != ?', 'Drake']) # Selects the minimum age for everyone with a last name other than 'Drake'
  Person.minimum(:age, :having => 'min(age) > 17', :group => :last_name) # Selects the minimum age for any family without any minors
  Person.sum("2 * age")



count应用如下:
  Person.count(:conditions => "age > 26")
  Person.count(:conditions => "age > 26 AND job.salary > 60000", :include => :job) # because of the named association, it finds the DISTINCT count using LEFT OUTER JOIN.
  Person.count(:conditions => "age > 26 AND job.salary > 60000", :joins => "LEFT JOIN jobs on jobs.person_id = person.id") # finds the number of rows matching the conditions and joins.
  Person.count('id', :conditions => "age > 26") # Performs a COUNT(id)
  Person.count(:all, :conditions => "age > 26") # Performs a COUNT(*) (:all is an alias for '*')

分享到:
评论

相关推荐

    rails3.1安装与mysql配置 windows

    标题 "rails3.1安装与mysql配置 windows" ...确保这个文件在系统路径中或者Rails应用的bin目录下,以便Rails能够正确地与MySQL通信。通过这些步骤,你就可以在Windows环境中建立一个运行Rails 3.1和MySQL的开发环境了。

    rails和mysql数据库连接中出现的问题以及解决办法

    在开发Web应用时,Rails框架和MySQL数据库的集成是一个常见的选择。然而,有时在尝试连接Rails应用到MySQL数据库时,可能会遇到一些问题。本篇文章将深入探讨这些常见问题及其解决方案。 首先,Rails与MySQL的连接...

    ruby on rails与MySql的环境配置——支持rails 2.3.5以上版本

    《Ruby on Rails与MySQL环境配置详解》 在开发基于Web的应用程序时,Ruby on Rails(简称Rails)框架和MySQL数据库的结合是常见的选择。本文将详细介绍如何在Windows环境下配置Ruby on Rails以支持Rails 2.3.5及...

    Ruby on Rails安装及MySQL数据库配置指南

    在安装和配置 Ruby on Rails 和 MySQL 数据库的过程中,可能会遇到一些问题。例如,在创建 POSTS 应用时可能会遇到问题,创建数据后数据库中有数据,但是到 Listing posts 界面无法查看,总是报错。解决方法是下载 ...

    ruby on rails MySql

    当在Ruby on Rails项目中使用MySQL作为数据存储时,这两个技术的结合提供了强大的后端支持。 在Rails中集成MySQL,你需要安装特定的数据库适配器,即`mysql2` gem。这个gem允许Rails与MySQL数据库进行通信,处理SQL...

    rails查询学习笔记

    描述中虽然没有具体信息,但我们可以推测这可能是一篇关于Rails中查询技巧和最佳实践的学习笔记,可能包括如何使用ActiveRecord查询接口进行复杂的数据库操作,如选择、过滤、排序、分组等。 标签 "源码" 暗示了这...

    docker-rails6-mysql8:Rails的mysql设置

    docker-rails6-mysql8 启动Rails设置 跑新轨道 $ docker-compose run web rails new . --force --no-deps --database=mysql --skip-test --webpacker docker镜像构建 $ docker-compose build 编辑database.yml ...

    Ruby on Rails中文指南

    在Ruby on Rails中文指南中,你将全面学习到如何利用这个强大的框架来构建动态的、数据驱动的Web应用程序。 首先,让我们深入理解Rails的核心概念: 1. **路由(Routes)**:Rails的路由系统是应用程序的导航蓝图...

    Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf

    在Ubuntu 11.04环境中,安装MySQL数据库是部署Ruby on Rails应用的重要步骤之一。首先,通过打开终端并执行以下命令进行安装: ```bash sudo apt-get install mysql-server ``` 在安装过程中,系统会提示输入MySQL...

    Rails中使用MySQL分区表一个提升性能的方法

    在Rails应用中,当面临大数据表的处理时,MySQL的分区表是一个实用的优化策略,可以显著提升查询性能。MySQL的分区表特性允许我们将一张大表分割成多个小表,以便于管理和加速查询。在本例中,针对一个名为diet_...

    gem安装、rails安装、mysql库文件安装

    1.安装gem,进入gem文件夹,里面有个setup文件,直接双击就行了。 2.进入rails目录使用gem命令安装(这一步必须要上...3.复制libmySQL.dll到ruby的安装目录的bin文件夹下,然后使用gem安装mysql-2.7.3-x86-mswin32.gem.

    rails 连接mysql的问题解决

    找不到指定的模块。... 您可能感兴趣的文章:Ruby rails 页面跳转(render和redirect_to)Rails link_to 详解rails常用数据库查询操作、方法浅析学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake,

    用于Ruby 和 Rails 项目的 MySQL 驱动程序.zip

    Ruby 的现代、简单且非常快速的 Mysql 库 - 绑定到 libmysql Mysql2 gem 旨在服务于连接、查询和迭代结果的极其常见的用例。那里的一些数据库库作为已经很复杂的可用 C API 的直接 1:1 映射。这个不是。

    rails指南 中文版

    1. **ActiveRecord**:这是Rails框架中的ORM(Object-Relational Mapping)组件,它负责处理数据库操作。通过ActiveRecord,开发者可以使用面向对象的方式来操作数据,而无需编写SQL语句。 2. **ActionController**...

    使用Aptana+Rails开发Rails Web应用(中文)

    安装过程中,遵循提示进行,确保选择自定义安装并勾选Rails相关的插件,以便在Aptana中获得对Rails的全面支持。 安装完成后,打开Aptana Studio,创建一个新的Rails项目。在“File”菜单中选择“New”然后点击...

    Rails 中mongrel的安装

    在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...

    中文版rails教程

    2. **数据库迁移(Database Migrations)**:Rails使用ActiveRecord和SQLite、MySQL或PostgreSQL等数据库系统交互。开发者通过编写迁移文件来定义和修改数据库结构。 3. **路由(Routing)**:Rails的路由系统根据...

    Rails 101 入门电子书

    - 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...

    关于rails学习中分页的示例

    在Rails开发中,分页是常见的功能,用于处理大量数据并优化用户体验。当我们从数据库查询数据时,一次性加载所有记录可能会导致性能问题,尤其是当数据量庞大时。因此,分页成为了解决这一问题的关键技术。这篇关于...

    Rails101_by_rails4.0

    此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...

Global site tag (gtag.js) - Google Analytics