mysql - 如何通过createdAt获取mysql顺序中的下一项
问题描述
我的前端应用程序可以列出我的项目订单createdAt
(肯定是通过调用 API):
SELECT * FROM items ORDER BY createdAt
输出例如:
id: myIdAAA
id: myIdEEE
id: myIdPPP
id: myIdRRR
每个项目的 ID 是 UUID(在示例中只是myId*
)。
我可以通过 url 打开项目的详细信息,/item/detail/myIdPPP
并且在此详细信息上我有GO TO NEXT
项目。
问题是,我不知道如何创建 SQL 查询来选择下一个项目,如下所示:
SELECT * FROM items AFTER myIdEEE ORDER BY createdAt
应该返回myIdPPP
。
SELECT * FROM items AFTER myIdPPP ORDER BY createdAt
应该返回myIdRRR
。
这是可能的,如何?
解决方案
如果我理解正确,您可以使用:
SELECT i.*
FROM items i
WHERE i.createdAt > (SELECT i2.createdAt FROM items i2 WHERE i2.id = ?)
ORDER BY i.createdAt DESC
LIMIT 1;
?
是感兴趣项目的参数占位符。这会在表中按时间返回下一次——假设没有重复。
注意:如果您真的想要一个唯一值来获取“下一个”项目,请使用自动递增列。这保证是唯一的,即使您同时插入多个项目。