ActiveRecord获取n个最新项目?

时间:2018-07-06 18:59:36

标签: mysql activerecord

我有一张下表:

| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| user      | varchar(128) | NO   |     | NULL    |                |
| content   | varchar(512) | NO   |     | NULL    |                |
| location  | varchar(128) | NO   |     | NULL    |                |
| timestamp | varchar(128) | NO   |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

使用ActiveRecord查询选择 n 最新帖子的最有效方法是什么?即给定变量n = 9,我希望获得最近发布的第9个帖子。

2 个答案:

答案 0 :(得分:1)

如果您需要前9个,则可以使用限制9。

select  * from my_table 
order by timestamp desc
limit 9 

或者如果您仅需要第9个使用限制8,1

select  * from my_table 
order by timestamp desc
limit 8,1 

答案 1 :(得分:0)

听起来像offset的工作。例如,要获取第三本书,请使用offset(2)

irb(main):010:0> Book.order(created_at: :asc).limit(3).map &:author
=> ["Steven B. Sample", "Victor H. Krulak", "Steven F. Hayward"]
irb(main):011:0> Book.order(created_at: :asc).offset(2).first.author
=> "Steven F. Hayward"