如何获取表中超出这样我就知道哪些账号可以重复使用。我有一个范围从50100到70100的帐号。我需要知道哪个账户表中没有存储数字(当前未使用),所以我可以使用。
例如,假设我在表中有以下数据:
Account Name
------ --------
50100 Test1
50105 Test2
50106 Test4
。。。。我应该看到结果:50101501025010350104
因为50101-50104是可用的帐号,因为当前不在桌子
复制自http://bytes.com/topic/sql-server/answers/78426-get-all-unused-numbers-range
关于MYSQL和PHP。
编辑
我的范围是10000000-99999999。
我目前的方法是使用MySql查询:'选择FLOOR(10000000+RAND()*8999999)作为"random_number"NOT IN(从联系人中选择uid)LIMIT 1'的联系人中的随机数;
谢谢。
解决方案1:
生成一个包含所有可能帐号的表。然后运行类似以下的查询:
SELECT id FROM allIDs WHERE id NOT IN (SELECT id FROM accounts)
解决方案2:
将整个id列放入php或javaorso中的数组中。然后运行for循环,检查数字是否在数组中。
$ids = (array with all ids form the table)
for($i=50100;$i<=70100;$i++){
if(array_search($i, $ids) != -1){
$availableids[] = $i;
}
}
一种方法是创建另一个表-填充所有允许的数字,然后编写一个简单的查询来查找新表中不在原始表中的数字。
对服务器中的帐户进行排序,并在读取结果的同时找到PHP中的跳转。排序序列中的任何跳跃都是"免费使用的",因为它们是有序的。您可以使用类似SELECT AccountNumber FROM Accounts SORT ASCENDING;
的东西进行排序。
为了提高效率,将空闲帐号存储在另一个表中,并使用第二个表中的号码,直到不再保留为止。这避免了过多的全文阅读(如第一段),这可能会很昂贵。当你在做的时候,你可能想在代码中删除账户的部分添加一个钩子,这样它们就会立即包含在第二个表中,从而使第一步变得不必要。