【问题标题】:How to get next item in mysql order by createdAt如何通过createdAt获取mysql顺序中的下一项
【发布时间】:2021-03-10 23:23:17
【问题描述】:

我的前端应用程序可以通过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

有可能以及如何实现?

【问题讨论】:

    标签: mysql sql sql-order-by


    【解决方案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;
    

    ? 是感兴趣项目的参数占位符。这会在表中按时间返回下一次——假设没有重复。

    注意:如果您真的想要获取“下一个”项目的唯一值,请使用自动递增列。这保证是唯一的,即使您同时插入多个项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 2015-11-20
      • 1970-01-01
      • 2021-01-13
      • 2015-03-07
      • 1970-01-01
      相关资源
      最近更新 更多