我想知道是否有任何方法可以生成随机的五位数字并使用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 |
+-------+-----------+-----------+--------------------------------------------
任何帮助将不胜感激。
答案 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()
随机数。
希望有帮助!