未使用的数字mysql

时间:2012-09-07 13:19:06

标签: php mysql

如何获取表格中的所有记录 顺序,所以我知道我可以重复使用哪些帐号。我有一个范围 帐号从50100到70100.我需要知道哪个帐号 数字没有存储在表格中(当前未使用),所以我可以使用。

例如说我在表格中有以下数据:

Account Name
------  --------
50100   Test1
50105   Test2
50106   Test4

.. .. .. 我应该看到结果: 50101 50102 50103 50104

因为50101-50104是可用的帐号,因为目前不在 表

http://bytes.com/topic/sql-server/answers/78426-get-all-unused-numbers-range

复制

关于MYSQL和PHP。

EDITED

我的范围是10000000-99999999。

我目前的方式是使用MySql查询: 'SELECT FLOOR(10000000 + RAND()* 89999999)AS random_number FROM contacts WHERE“random_number”NOT IN(SELECT uid FROM contacts)LIMIT 1';

感谢。

3 个答案:

答案 0 :(得分:3)

解决方案1:
生成一个包含所有可能帐户数的表。然后运行类似这样的查询:

SELECT id FROM allIDs WHERE id NOT IN (SELECT id FROM accounts)

解决方案2:
将整个id colummn放入php或java orso中的数组中。然后运行for循环以检查数字是否在数组中。

$ids = (array with all ids form the table)
for($i=50100;$i<=70100;$i++){
    if(array_search($i, $ids) != -1){
        $availableids[] = $i;
    }
}

答案 1 :(得分:1)

一种方法是创建另一个表 - 填写所有允许的数字,然后编写一个简单的查询来查找新表中不在原始表中的那些。

答案 2 :(得分:1)

对服务器中的帐户进行排序,并在读取结果时在PHP中查找跳转。排序序列中的任何跳转都是“免费使用”,因为它们是有序的。您可以使用SELECT AccountNumber FROM Accounts SORT ASCENDING;

之类的内容进行排序

要提高效率,请将免费帐号存储在另一个表中,并使用此第二个表中的数字,直到不再存在。这避免了进行太多的完整读取(如第一段中所述),这可能很昂贵。当你在它时,你可能想在删除帐户的代码部分添加一个钩子,因此它们会立即包含在第二个表中,这使得第一步不必要。