如何从 MySQL 数据库中的滚动计数中找到实际计数

How to find actual count from a rolling count in MySQL DB

我有一个table,其中特定数据的计数上升到 5,然后滚动到 0,我想查询显示实际计数的 table,如下所示

期望输出:

Dev_count Actual_Count
1 1
2 2
3 3
4 4
5 5
0 6
1 7
2 8
3 9
4 10
5 11
0 12

我尝试使用触发器使用以下 SQL 脚本

更新具有实际计数的附加列
CREATE TRIGGER insert_continuous_count BEFORE INSERT ON x_table
FOR EACH ROW SET
NEW.continuous_count = (SELECT continuous_count 
  FROM x_table 
  where device_id = NEW.device_id 
  order by No DESC LIMIT 1
)  + 1;

然后我在某处读到触发器无法更新已被调用函数或触发器的语句使用(用于读取或写入)的 table。

有没有更简单的方法来获得所需的输出?

我想你需要这样的东西:

select dev_count, 
       @row_number:=  @row_number + 1 as  Actual_Count
from test_tbl
cross join (select @row_number := 0) x;

演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/139

在MySQL 8+中你可以使用ROW_NUMBER函数:

SELECT
    dev_count,
    ROW_NUMBER() OVER () as rn
FROM test_tbl
ORDER BY rn;

演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/144