我想在用户表号字段中添加100个条目,随机字符长度为10,所有条目也应该是唯一的。我如何使用MYSQL查询代码实现这一目标?
或者我需要使用PHP吗?
请帮我处理代码段。感谢。
答案 0 :(得分:7)
insert into table ( SUBSTRING(MD5(RAND()) FROM 1 FOR 10) , field2 , field3) , ( SUBSTRING(MD5(RAND()) FROM 1 FOR 10) , field2 , field3) , .........
..............
在php中的看到这2个链接:
答案 1 :(得分:7)
这可能会造成重复,而且时间太长。这是10个字符长:
UPDATE users SET numbers = SUBSTRING(MD5(RAND()) FROM 1 FOR 10)
但是,您仍然可以获得重复值。
所以你可以在你的专栏上放置一个独特的约束。然后尝试更新。如果有重复项,您将收到错误消息。然后再试一次。你只有100个条目,所以它可能没问题。
这是密码吗?
如果是这样,我建议加密该值。当然,你有一个不知道价值是什么的问题。所以你可以创建一个临时表,在那里插入随机值。然后在将值从临时表插入到实际表中时对这些值进行加密。然后,您可以使用临时表作为参考(为用户提供密码等)。希望有所帮助。
答案 2 :(得分:6)
UPDATE TABLE users SET number_field = MD5(RAND());
答案 3 :(得分:0)
您无法生成唯一的随机数。随着时间的推移,随机性将生成已存储的数字。你需要制作一个“准随机”数字,这意味着它是一个基于另一个数据的数字,但它看起来是随机的。您可以使用表格上的主键作为基数来生成“假随机”数字
INSERT INTO myTable(primaryKey,quasiRandom)
SELECT IFNULL(MAX(primaryKey),0)+1, CAST(CONCAT(IFNULL(MAX(primaryKey),0)+1,CHAR(FLOOR(RAND()*26)+65),FLOOR(100+RAND()*(500-100)))
AS CHAR(10)) AS quasiRandom FROM myTable