使用随机唯一编号更新每行中的列

We'*_*ere 6 mysql random sql-update

我有一个大约20k行的小桌子.在该表中有一个名为random_uid(INT NOT NULL)的列.我想用随机唯一编号更新所有20k行.

由于我的桌子很小,我不认为我需要使用字符串或UUID,所以我去了

SELECT FLOOR(RAND() * 100000000) AS random_num
FROM table1 
WHERE "random_num" NOT IN (SELECT random_uid FROM table1)
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法更新并从同一个表中选择,因此我在创建UPDATE查询时遇到了问题.

编辑: 我没有上述随机性的问题,因为我没有将此用于任何安全性purpoces,只是为每个不仅增加的行创建唯一 ID.由于用于验证另一行中已存在相同数字的选择,我无法使用UPDATE,这就是问题所在.

sof*_*t87 3

对 2M 条记录进行测试,迭代 100 次。测试成功。

UPDATE IGNORE table1 SET random_uid = ( RAND( ) * ( SELECT countID
FROM (
SELECT MAX(random_uid) + COUNT(1) + 1 countID
FROM table1) AS t3)
) + ( 
SELECT maxID
FROM (SELECT MAX( random_uid ) maxID FROM table1) AS t)
Run Code Online (Sandbox Code Playgroud)

  • 我没有接受答案的原因是因为我测试了它,它在工作时生成伪随机数并更新列,这些数字不是唯一的! (2认同)