有时候会遇到这样的场景:往表里加一个uuid字段,并给这些数据生成uuid,且去掉“-”
于是写出这样一条sql语句:
update table set uuid = replace(uuid(), '-', '')
执行后发现uuid都是重复的。
直接uuid()没有问题,replace(uuid(), '-', '')会重复
可以先生成uuid放到临时表中,再去update,代码如下:
UPDATE table
SET uuid = (
SELECT REPLACE
( uid, '-', '' )
FROM
( SELECT UUID() AS uid, id AS tid FROM table WHERE uuid = '' OR uuid IS NULL ) t
WHERE
id = t.tid
)
WHERE
uuid = ''
OR uuid IS NULL;
高谈阔论