ruby on rails,条件查询的方法:order,limit,offset的总结整理

order: 对结果进行排序,eg: 将返回的对象按照名称升序排列,按照创建时间降序排列等。

limit:   对结果的数量进行限制,eg:数据库中有成千上万的注册用户,我们不希望一下子把这些用户的信息都取出来,而是希望将这些用户分页显示,点击下一页才进行下一次读取。

limit方法,是读取第一页的N个用户,第二页需要返回的用户都需要将前面的N记录跳过,这里就用到了offset方法。

所以说,order;limit;offset方法配合使用就可以实现分页功能。

User对象按照id的值进行升序排列后,跳过前面10条数据(offset),返回4条对象(limit)

User.order("id").limit(4).offset(10)

liimit , offset 方法参数都是一个整数,

limit: 限制查询记录的个数

offset:跳过记录的个数

order方法的参数接受一个sql语法的条件,格式是

table_name.column_nameASC/DSC


如果对象涉及一个表的话,可以不指定表名。不指定排序方向的话,缺省是升序。

不过我觉得最好还是别偷懒都写上吧,以增加程序的可读性和避免混乱。尤其是一个对象是由多个表join在一起以及各个表中有相同名字字段的时候。

所以上面的查询语句最好写成

User.order("user.idASC").limit(4).offset(10)

对于布尔值,false值是0,true值是1,排序的使用用得上。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,498评论 0 9
  • 基础操作: User::find()->one(); 此方法返回一条数据(以下所有User统一为数据表); ...
    liudai123阅读 5,086评论 0 1
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,076评论 0 19
  • 步骤: 1.Device连接APNs服务器并携带设备序列号 2.连接成功,APNs经过打包和处理产生device_...
    coderFamer阅读 959评论 0 1
  • 隔壁的李奶奶,等不到2018年的第一场雪落下,就驾鹤西去了。 她应该是没有留下遗憾的。 儿孙满堂,子孝孙贤,走完了...
    小狐三问阅读 1,128评论 20 20