生成一个5位数的数字,但MySQL表列除外

生成一个5位数的数字,但MySQL表列除外,mysql,exception,numbers,Mysql,Exception,Numbers,我有一个MySQL数据库,其中包含一个名为images的表。在该表中,我有一个名为file\u name的列。文件名列包含5行: .---.-----------. | # | file_name | .---.-----------. | 1 | 00000 | | 2 | 00001 | | 3 | 00002 | | 4 | 00003 | | 5 | 00004 | .---------------. 我的查询代码是: <?php requ

我有一个MySQL数据库,其中包含一个名为
images
的表。在该表中,我有一个名为
file\u name
的列。
文件名
列包含5行:

.---.-----------.
| # | file_name |
.---.-----------.
| 1 | 00000     |
| 2 | 00001     |
| 3 | 00002     |
| 4 | 00003     |
| 5 | 00004     |
.---------------.
我的查询代码是:

<?php
require_once('config/config_db.php');
$SQLquery = "SELECT `file_name` FROM images";
$result = mysql_query($SQLquery);

while($row = mysql_fetch_array($result)){
    echo $row['file_name']."<br>"; // ?
}
?>

根据我前面的问题,这可能在一条SQL语句中完成这项工作:-

SELECT aNumber
FROM (
SELECT LPAD(CONVERT(a.i+b.i*10+c.i*100+d.i*1000+e.i*10000,CHAR(5)),5,'0') AS aNumber
FROM integers a, integers b, integers c, integers d, integers e) Sub1
LEFT OUTER JOIN images b ON Sub1.aNumber = b.file_name
WHERE b.file_name IS NULL
ORDER BY RAND()
LIMIT 1
使用一个名为integers的表,该表有一个名为i的列和10个值为0到9的行


它使用的是ORDER BY RAND(),速度有点慢,因此可能值得您对此进行优化。

1)停止使用
mysql\uquot/code>函数。2) 获取数据库id并将其存储在数组中,将数组传递给函数,然后使用类似于
array_diff()
的方法。退一步,您是否尝试返回一个以前未使用过的5位数字?我正在尝试生成一个以前未使用过的数字。
SELECT aNumber
FROM (
SELECT LPAD(CONVERT(a.i+b.i*10+c.i*100+d.i*1000+e.i*10000,CHAR(5)),5,'0') AS aNumber
FROM integers a, integers b, integers c, integers d, integers e) Sub1
LEFT OUTER JOIN images b ON Sub1.aNumber = b.file_name
WHERE b.file_name IS NULL
ORDER BY RAND()
LIMIT 1