我有一张下表:
| 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个帖子。
答案 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"