Mysql 在SQL语句中生成唯一的CHAR(8)随机值
我有这张桌子:Mysql 在SQL语句中生成唯一的CHAR(8)随机值,mysql,sql,Mysql,Sql,我有这张桌子: -id:主键 -代码:字符(8)唯一 在ANSI SQL(或MySQL)中,是否有一种方法可以在单个SQL语句中为任意数量的行生成唯一的数字代码(可以基于自动数字id)?(比如说100) 我已经在PHP的一个循环中完成了这项工作,但不知道是否可以在纯SQL中完成 select substr(UUID(), 1, 8) 要符合当前的要求: SELECT floor(rand() * 90000000) + 10000000; # Will create an eight-digi
-id:主键
-代码:字符(8)唯一
在ANSI SQL(或MySQL)中,是否有一种方法可以在单个SQL语句中为任意数量的行生成唯一的数字代码(可以基于自动数字id)?(比如说100)
我已经在PHP的一个循环中完成了这项工作,但不知道是否可以在纯SQL中完成
select substr(UUID(), 1, 8)
要符合当前的要求:
SELECT floor(rand() * 90000000) + 10000000; # Will create an eight-digit random number
INSERT INTO table (code) VALUES (floor(rand() * 90000000) + 10000000);
UPDATE table SET code = floor(rand() * 90000000) + 10000000;
或者,根据自动增量:
SELECT SUBSTRING( MD5(id), 25 ) FROM table
或更新:
UPDATE table SET code = SUBSTRING( MD5(id), 25 )
有什么原因不能只使用id并添加一些字符来填充8?是的,它不能是连续的,所以用户无法猜测。@Mchl当然这不是唯一的,没有适合8的东西;9;10…字符可以是唯一的…抱歉,通过生成,我的意思是将其插入到表中。@Mchl,如果您尝试将9位数字放入8位字段,该怎么办?:)@Petruza使用我的最后一个代码片段,这将更新每一行。否则,只需将
子字符串(MD5(RAND()),25)
作为一个值插入即可。@Mchl“是的,它不能是连续的,所以用户无法猜测它。”引用问题的注释
UPDATE table SET code = SUBSTRING( MD5(id), 25 )