【发布时间】:2013-01-12 23:50:43
【问题描述】:
我需要有关执行以下查询的帮助:
- 从最新的记录开始,向下到较旧的记录。
- 需要按created_at时间排序。
- 如果在 created_at 时间数据库中有新记录,则检索它们,但不要获取我从步骤 1 中获得的记录。
- 我只想一次只获取 16 条记录。这个数字以后可能会改变。
- 不要检索我之前发送的记录。
也只是为了让您知道,这是通过 $.ajax 启动的。
这样做的原因是因为我正在将新旧记录实时发送给客户。想想像用户开始访问网站并从新记录开始获取当前记录。然后用户可以去获取较旧的记录,但在同样的请求中,它也会检索全新的记录。一次只有 16 条记录。
我说得通吗?
这是我目前拥有的代码:
RssEntry.includes(:RssItem).where("rss_items.rss_id in (?) AND (rss_entries.id < ? OR rss_entries.created_at > ?)", rssids, lid, time).order("rss_entries.id DESC").limit(16)
lid = last lowest id from those records
rssids = ids from where to get the records
time = last time it did the records call
上面的代码只是开始。我现在需要帮助以确保它符合我的上述要求。
更新 1
好的,所以我设法做了我想做的事,但只用了 2 个 sql 查询。我真的认为不可能在一个 sql 查询中做我想做的事。
非常感谢任何帮助。
谢谢。
【问题讨论】:
-
是否可以在一个 sql 查询中满足我的要求?还是我必须在两个查询中完成?
标签: sql ruby-on-rails ruby-on-rails-3