如何获取表格中的所有记录 顺序,所以我知道我可以重复使用哪些帐号。我有一个范围 帐号从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';
感谢。
答案 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;
。
要提高效率,请将免费帐号存储在另一个表中,并使用此第二个表中的数字,直到不再存在。这避免了进行太多的完整读取(如第一段中所述),这可能很昂贵。当你在它时,你可能想在删除帐户的代码部分添加一个钩子,因此它们会立即包含在第二个表中,这使得第一步不必要。