根据时间戳分页排序问题

我们现在有一张消息表 t_message,字段有 id(int),content(varchar),user_id(int),gtm_create(timestamp)。
我们这边是按照时间戳gmt_create来排序分页的.
语句如下:

第一页的sql:
select * from t_message order by gmt_create DESC limit 20;

第二页的sql:
select * from t_message where gmt_create<'第一页最后一条消息的时间戳' order by gmt_create DESC limit 20;

但是现在出现了一个问题,我们现在群发了40条消息,**时间戳都是相同的**

导致我们分页查询的时候第一页是正常的,直到第二页的时候其余20条数据就丢了。

我目前只能想到的办法就是对创建消息丢进消息队列里,一条一条的排队处理,这样有消息的时间戳就能保证不一样了!!

各位大佬还有什么好的解决办法呢??

select * from t_message where gmt_create<='上一页最后一条消息的时间戳' order by gmt_create,id DESC limit 20;

群发的时候每条能否生成不同的时间戳

根据时间戳和内容进行分组

首先,你条件里的等号,是想查询出包含这个时间戳的内容,那么你就得先想办法,确定如果你这个时间戳对应的数据有很多条,比如你说的有40条,那你就得先想办法确定哪条数据是你要显示出来的。如果你想显示出来其中的一条,哪一条都行,那你可以把条件里的等号去掉,把20改成19,然后再union all一条数据就行了,那条数据就是你等于那个时间戳的limit 1.具体sql可以这样写:

select * from t_message where gmt_create='上一页最后一条消息的时间戳'  limit 1
union all
select * from t_message where gmt_create<'上一页最后一条消息的时间戳' order by gmt_create DESC limit 19;

一般的ORM 框架不是都已经实现了自动分页功能吗?为什么还要自己重写分页呢?