SQL表自增Id对应FakeId每5条重置为1的算法实现求助
生成每5条重置的FakeId的计算公式
嘿,这个问题其实超简单的,用基础的取模运算就能搞定,完全不用怕算法复杂!
核心公式就是:
FakeId = (Id - 1) % 5 + 1
为什么这么写?我给你拆解开讲:
- 先把
Id减1:这一步是为了让起始计数从0开始(比如Id=1变成0,Id=5变成4) - 然后对5取模(
%就是取模运算符,算的是除法后的余数):这样得到的结果范围会是0、1、2、3、4,正好对应5个一组 - 最后加1:把结果从0-4变回1-5,完美符合你要的每5条重置为1的需求
举几个例子验证一下:
- 当Id=1时:
(1-1)%5+1 = 0+1 = 1 - 当Id=5时:
(5-1)%5+1 = 4+1 = 5 - 当Id=6时:
(6-1)%5+1 = 5%5=0 +1 =1(正好重置) - 当Id=10时:
(10-1)%5+1 =9%5=4 +1=5 - 当Id=11时:
(11-1)%5+1=10%5=0 +1=1(再次重置)
在SQL里怎么用?
如果是插入数据时自动计算FakeId,以MySQL为例,你可以这么写:
INSERT INTO your_table (FakeId, column1, column2) VALUES ((523402 - 1) % 5 + 1, 'value1', 'value2');
如果是查询时动态生成FakeId(不用存到表里),可以直接在SELECT语句里计算:
SELECT Id, (Id - 1) % 5 + 1 AS FakeId, column1, column2 FROM your_table;
放心用这个公式就行,不管Id增长到多大,都会严格每5条重置一次FakeId~
内容的提问来源于stack exchange,提问作者André
相关产品推荐
相关产品推荐

