我想生成一个5位数字,该数字在数据库内不重复。
假设我有一个名为numbers_mst 的表,其字段名为 my_number

我想生成一个数字,使其不重复出现在此my_number字段中。
在此允许前面的零。因此,允许使用像00001这样的数字。
另一件事是,它应该在00001到99999之间。我该怎么做?

我可以在这里猜测的一件事是,我可能必须创建一个递归函数才能将数字检入表并生成。

最佳答案

SELECT FLOOR(RAND() * 99999) AS random_num
FROM numbers_mst
WHERE "random_num" NOT IN (SELECT my_number FROM numbers_mst)
LIMIT 1

这是做什么的:
  • 使用RAND()在0到1之间选择随机数。
  • 将该数字放大为0-99999之间的数字。
  • 仅选择表中不存在的那些。
  • 仅返回1个结果。
  • 关于mysql - 如何使用PHP在数据库中重复生成随机数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11680025/

    10-11 07:26
    查看更多