既然是 数据库中已有记录用到的数字新的记录就不能有了
那么查询就是必须要有的了,不然就不知道数据库中已经有了哪些
$rs = mysql_query('select group_concat(`分配号`) from 表');
list($code) = mysql_fetch_row($rs);
$code = array_diff(range(1, 200), explode(',', $code));
shuffle($code);$code[0] 就是当前应插入的 分配号
那么查询就是必须要有的了,不然就不知道数据库中已经有了哪些
$rs = mysql_query('select group_concat(`分配号`) from 表');
list($code) = mysql_fetch_row($rs);
$code = array_diff(range(1, 200), explode(',', $code));
shuffle($code);$code[0] 就是当前应插入的 分配号
每次插入数据时,生成一个1~200的随机数rand,然后从number表取出小于等于rand的一个最大的数并删除
接着再依次循环以上动作,直接全部插入完毕。
如果数据只有200条,1楼的是最好的了。
如果数据比较大,不建议每次搜寻记录表中已使用的分配码,应该起一个分配码表,记录1-N的分配码,每次使用完,更新状态为已使用。下次只在未使用的分配码中获取。但这样,如果记录被删除了,那么对应的分配码的状态也应更新为未使用。1楼的思路是,先读取表中已有的分配码,然后用1-200的数组与已有的分配码做diff操作,得出未使用的分配码,然后用shuffle随机选一个使用。