我有一个包含很多行的数据库,我想用 4个字符随机字符串0-9a-zA-Z
更新每行中的列,但确保此随机字符串不是已经存在。
所有列都应该用唯一字符串更新的重要部分,我不知道如何做到这一点,也许通过在随机字符串已经存在时重新创建一个新的随机字符串。
最后,如果数据库包含500,000行,则所有500,000行都使用唯一的随机值进行更新。
该表名为messages
,该列名为messageid
。
如何实现?
答案 0 :(得分:1)
首先,为什么是一个字符串?为什么不使用整数作为消息ID?这很容易实现:
set @m := 0;
update messages
set message_id = (@m := @m + 1)
order by rand();
你可以用字符串做类似的事情,但它更麻烦,使用数字可以减少痛苦。
答案 1 :(得分:0)
从问题看,你似乎想要生成一个随机字符串 基本上要实现这一点,你需要使用rand()函数 您可以使用它来实现随机字符串。
select conv(floor(rand() * 9999), 20, 36) ;
select SUBSTRING(MD5(RAND()) FROM 1 FOR 4);
要申请你的桌子,
update messages
set message_id = (select conv(floor(rand() * 9999), 20, 36));
or
update messages
set message_id = (select SUBSTRING(MD5(RAND()) FROM 1 FOR 4));