我想通过clean mysql生成一个唯一的随机整数(从10000到99999),有什么想法吗?
我不想通过循环(generate number->check i t in database)在PHP中生成这个数字,因为我想在MySQL查询中使用一些智能解决方案。

最佳答案

虽然看起来有些尴尬,但这是实现目标所能做到的:

SELECT FLOOR(10000 + RAND() * 89999) AS random_number
FROM table
WHERE random_number NOT IN (SELECT unique_id FROM table)
LIMIT 1

简单地说,它生成n个随机数,其中n是表行的计数,过滤掉表中已经存在的行,并将剩余的集合限制为1。
在大桌子上可能有点慢。为了加快速度,您可以从这些唯一的ID创建一个视图,并使用它来代替嵌套的select语句。
编辑:删除的引号

关于mysql - mysql唯一编号生成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4382185/

10-09 20:30
查看更多