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

时间:2014-09-10 00:17:38

标签: 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        |
+-------+-----------+-----------+--------------------------------------------

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

现在没有保证不会有重复......但这是两个随机数并乘以不同的数字,所以它们不太可能会得到随机数

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()随机数。
希望有帮助!