我在db上有2个字段。次要和主要:
Minor, Major
0,0
1,0
2,0
3,0
4,0
5,0
7,0
8,0
...
65536,0
0,1
1,1
2,1
3,1
4,1
...
65536,1
0,2
比较这个的最佳方法是什么。我在Bookshelf.js上这样做,但在php或ruby中也欢迎。我需要检查当前情况,获得更大的主要内容并添加次要+ 1,如果不是65536其他次要是0主要获得主要+ 1。
提前致谢。
编辑: 我必须将主要和次要保存到各个领域。他们为每个注册的用户增加。
例如。 用户
id, username,minor,major
1, john , 0, 0
2, mike, 1, 0
....
65537, jeff, 65536,0
现在是汤姆的,主要的增量是因为最后一个小盘子是65536。
65538, tom, 0 , 1
我不知道如何解释更多。
答案 0 :(得分:1)
我绝对 肯定不会理解这个问题,但这里有一些关于限制整数值范围的想法:
%
- php mysql),允许您收集整数除法的其余部分。例如,... % 65536
将返回0到65535之间的值。如果您确实需要0到65536之间的值,则会改为编写... % 65537
。&
- php mysql)。例如,... & 0xFFFF
将仅保留数字的两个最低有效字节 - 实际上执行等价的"模65536"操作(结果介于0和65535之间)答案 1 :(得分:0)
$magicNumber = 65536;
$sql = "
SELECT
MAX(userIndex) userIndex
FROM (
SELECT
(Minor + (Major * ".$magicNumber.")) AS userIndex
FROM TableName
) AS innerSelect
";
运行sql会给你当前最高的userIndex,假设它是145323。
现在将此增加1,您就拥有$newIndex = 145324
。
这为您提供当前最高的索引。现在可以像这样计算字段:
$major = (int)($newIndex / $magicNumber);
$minor = $newIndex % $magicNumber;