mysql SQL如何知道基于日期的记录的当前编号或索引?

6fe3ivhb  于 2023-01-04  发布在  Mysql
关注(0)|答案(1)|浏览(109)

我有一个名为sub_transactions的记录表:

id              transaction_id          date    
51                           4          2023-01-02 00:00:00
52                           4          2023-02-06 00:00:00
53                           4          2023-03-06 00:00:00

假设我获取日期介于Feb 5 - Mar 5之间的记录,然后在前端显示,如下所示:

Transaction ID     Sub Transaction ID       date
             4                      2       Feb 6, 2023

如您所见,Sub Transaction ID列编号将显示记录为“2"的当前索引。使用以下SQL查询:

SELECT *, ROW_NUMBER() OVER(ORDER BY id) AS r_number FROM sub_transactions WHERE start_date >= '2023-02-05' AND start_date <= '2023-03-05';

将导致:

id              transaction_id          date                         r_number
52                           4          2023-02-06 00:00:00                 1

r_number数据应为“2”,因为它是第二条记录。另一个示例是提取大于3月5日的记录,所需的结果为:

Transaction ID     Sub Transaction ID       date
             4                      3       Mar 6, 2023

子事务ID列编号将为“3”,因为它是第三条记录。如果表中的第一条记录将被删除,则索引也将重置。实现此目的的最佳方法是什么?谢谢。

eeq64g8w

eeq64g8w1#

您可以使用子选择

SELECT * FROM
(
  SELECT *, ROW_NUMBER() OVER(ORDER BY id) AS r_number 
  FROM sub_transactions
) TMP
WHERE start_date >= '2023-02-05' AND start_date <= '2023-03-05';

相关问题