我有一个内容提要,按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 个)。
我确定我不是第一个遇到类似问题的人......有什么想法吗?