Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在SQL语句中生成唯一的CHAR(8)随机值_Mysql_Sql - Fatal编程技术网

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 )