php - 使用mysql生成并插入五位随机数

标签 php mysql sql database

我想知道是否有任何方法可以生成随机的五位数字并使用mysql插入数据库。我知道我可以使用 PHP 来完成此操作,但想知道我是否可以摆脱 PHP 并使用数据库来完成此操作。此外,生成的号码应该与数据库中已存储的号码不同。

以下是其外观示例:

我在 random_no field 中有四个常见的模式字母,即 org1,并且想要附加其他 5 个随机字母,如下例所示:

+-------+-----------+-----------+--------------------------------------------+
|   id  |   title   |   phone        |         ABN       | Random No        |
+-------+-----------+----------+---------------------------------------------
|   1   |   title1    | 4765 5678   |   214-444-1234    |  org123456        |
|   2   |   title2    | 4444 4444   |   555-111-1234    |  org109876        |
|   3   |   title3    | 3333 3333   |   214-222-1234    |  org187654        |
|   4   |   title4    | 1111 1111   |   817-333-1234    |  org156432        |
|   5   |   title5    | 2222 2222   |   214-555-1234    |  org177654        |
+-------+-----------+-----------+--------------------------------------------

任何帮助将不胜感激。

最佳答案

现在不能保证不会出现重复...但是这是获取两个随机数并将它们乘以不同的数字,因此不太可能他们会获得随机数

UPDATE table t,
(   SELECT id, LPAD(FLOOR(7 + (RAND() * 50) * (RAND() * 333)), 5, 0) as join_num
    FROM table
)t1
SET t.random_no = CONCAT(t.random_no, t1.join_num)
WHERE t.id = t1.id;

从这里我建议您执行此操作..更新表后返回并运行此查询

SELECT id FROM table
GROUP BY random_no
HAVING COUNT(*) > 1;

如果返回任何结果,那么 id 将需要一个不同的随机数,一旦知道是否有任何重复,您就可以在任何重复的位置更改它

更新查询的详细信息...

更新表别名t。
从表中选择 id,然后选择随机数别名 t1。
将数字和列逐行连接起来..
其中 id 相等...为每一行获取不同的数字。

LPAD 是一个零填充,这样如果数字小于 5 个空格,它将用 0 填充,然后您必须使用 FLOOR()使用 RAND() 获取随机数。
希望这有帮助!

关于php - 使用mysql生成并插入五位随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755462/

相关文章:

mysql - Entity Framework : Set MySQL custom environment variables

c# - 使用 System.Data.Linq.Mapping 并自动递增 sqlite 数据库中的主键时出错

mysql - 如何为mysql中的子查询赋予默认值?

sql - 如何在 CTE 中编写 2 个 select 语句?

php - 在 MySQL + PDO 中显示警告

php - 在 MySQL/PHP 脚本中使用 php time() 而不是 now()

mysql - 在 MySQL 中提取日期范围内的月份日期

php - 精细上传者 - 301 永久移动 fatal error

java - 将 Java 字符串数组转换为 php 数组

php - 在执行 SQL 文件时与 MySQL 一起使用 --ignore-table