如何通过createdAt获取mysql订单中的下一项
我的前端应用程序可以通过如何通过createdAt获取mysql订单中的下一项,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我的前端应用程序可以通过createdAt列出我的物品订单(当然可以通过调用API): 例如,输出为: id: myIdAAA id: myIdEEE id: myIdPPP id: myIdRRR 每个项目的Id都是UUID(示例中只有myId*) 我可以通过url/item/detail/myIdPPP打开项目的详细信息,在这个详细信息上,我可以转到下一个项目 问题是,我不知道如何创建SQL查询来选择下一项,如下所示: SELECT * FROM items AFTER myIdEEE O
createdAt
列出我的物品订单(当然可以通过调用API):
例如,输出为:
id: myIdAAA
id: myIdEEE
id: myIdPPP
id: myIdRRR
每个项目的Id都是UUID(示例中只有myId*
)
我可以通过url/item/detail/myIdPPP
打开项目的详细信息,在这个详细信息上,我可以转到下一个项目
问题是,我不知道如何创建SQL查询来选择下一项,如下所示:
SELECT * FROM items AFTER myIdEEE ORDER BY createdAt
应返回myIdPPP
SELECT * FROM items AFTER myIdPPP ORDER BY createdAt
应返回myidrr
这是可能的,如何实现?如果我理解正确,您可以使用:
SELECT i.*
FROM items i
WHERE i.createdAt > (SELECT i2.createdAt FROM items i2 WHERE i2.id = ?)
ORDER BY i.createdAt DESC
LIMIT 1;
?
是感兴趣项的参数占位符。这将按时间顺序返回表中的下一次——假设没有重复项
注意:如果你真的想要一个唯一的值来获取“下一个”项目,那么使用一个自动递增的列。这保证是唯一的,即使您同时插入多个项目。如果我理解正确,您可以使用:
SELECT i.*
FROM items i
WHERE i.createdAt > (SELECT i2.createdAt FROM items i2 WHERE i2.id = ?)
ORDER BY i.createdAt DESC
LIMIT 1;
?
是感兴趣项的参数占位符。这将按时间顺序返回表中的下一次——假设没有重复项
注意:如果你真的想要一个唯一的值来获取“下一个”项目,那么使用一个自动递增的列。这保证是唯一的,即使您同时插入多个项目。看起来不错!是的,没错!非常感谢。看起来不错!是的,没错!非常感谢。