未使用的号码mysql


unused number mysql

如何获取表中超出这样我就知道哪些账号可以重复使用。我有一个范围从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;的东西进行排序。

为了提高效率,将空闲帐号存储在另一个表中,并使用第二个表中的号码,直到不再保留为止。这避免了过多的全文阅读(如第一段),这可能会很昂贵。当你在做的时候,你可能想在代码中删除账户的部分添加一个钩子,这样它们就会立即包含在第二个表中,从而使第一步变得不必要。