我有一个内容提要,按date DESC, id DESC
.
date
只是一个日期,而不是日期时间。
id
是典型的INT auto_increment
。
我需要查询n
“在特定行之后”的行。(想象一个无限滚动,它需要“获取比当前最后一个项目更旧的项目”)
我会查询where id < :last_id
,但问题是 的顺序与 的顺序date
不一致_id
。
我会查询where date < :last_date
,但问题是“每天”有超过 1 个项目。我会丢失所有使用相同日期的项目。
我会查询,ORDER BY date DESC, id DESC LIMIT x, n
但提要可能会在 2 个查询之间发生变化,将新项目添加到顶部,从而移动整个偏移量。
我目前的 hacky 解决方案是查询where date <= :last_date ORDER BY LIMIT date DESC, id DESC LIMIT n+20
然后“手动”丢弃当前最新项目之前的结果。(希望不超过 20 个)。
我确定我不是第一个遇到类似问题的人......有什么想法吗?