一尘不染

如何使用PHP在数据库中重复生成随机数?

mysql

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

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

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


阅读 430

收藏
2020-05-17

共1个答案

一尘不染

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

这是做什么的:

  1. 使用RAND()在0到1之间选择随机数。
  2. 将其放大为0-99999之间的数字。
  3. 仅选择表中不存在的那些。
  4. 仅返回1个结果。
2020-05-17