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
,这就是问题所在.
对 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)
归档时间: |
|
查看次数: |
3926 次 |
最近记录: |