我有一张我正在从网上取来的发言提醒单 Database
排序依据 createdAt
与 limit = 10
以及 offsetSent
它的初始值为0,计算方式是,当进行提取时,服务器返回一个param lastOffset = offsetSent + lengthOfRecordsFound
. 现在的问题是当我创建一个新记录时 refresh
通过发送一个ajax请求,它将返回最后一条相同的记录,因为新记录被添加到顶部和底部 offset
还是一样。
有人有办法解决这个问题吗?
3条答案
按热度按时间uqdfh47h1#
如果你能挥动它,最好避免
OFFSET
使用这样的模式。如果要先获取最近的数据,请将第一行的值设置为非常大的数字。然后像这样在查询中使用它。
然后,抓紧你拿到的最后一个身份证。下次获取时,请将其值用于第一行。
在实际操作中,您可以让每个select操作多提取一行
LIMIT 11
,并仅使用最后一行获取其id值。然后使用WHERE id <= ?first_row?
代替下一个查询的偏移量。如果第11行从未出现在您的程序中,那么您就知道已经获取了所有内容。vpfxa7rd2#
我猜是这样的
createdAt
不是唯一的(为什么要?)。您需要提供完全确定的排序顺序,否则使用的任何分页方法都将随机失败。o75abkj43#
伙计们,我通过从服务器发送值解决了我的问题,
from
以及to
基本上是id
我正在发送的记录。我把它们保存在我的网络应用状态。并在表中查询id < from || id > to
. :)