我刚刚将一堆数据导入到MySQL表中,我有一个名为“GUID”的列,我想基本上使用新的唯一随机GUID填充所有现有行。
我该如何在MySQL中做到这一点?
我尝试过
UPDATE db.tablename
SET columnID = UUID()
where columnID is not null
只需将每个字段都保持相同即可
// UID Format: 30B9BE365FF011EA8F4C125FC56F0F50
UPDATE `events` SET `evt_uid` = (SELECT UPPER(REPLACE(@i:=UUID(),'-','')));
// UID Format: c915ec5a-5ff0-11ea-8f4c-125fc56f0f50
UPDATE `events` SET `evt_uid` = (SELECT UUID());
// UID Format: C915EC5A-5FF0-11EA-8F4C-125FC56F0F50
UPDATE `events` SET `evt_uid` = (SELECT UPPER(@i:=UUID()));
当我将sql_mode设置为""时,我遇到了这个错误。经过一些测试,我决定问题是由于这种用法引起的。当我在默认设置上进行测试时,发现这个问题不存在。 注意:在更改模式后,请不要忘记刷新您的连接。
SET columnID = UUID()
是行得通的 - 只是如果你对大量行做这个操作,UUID 字符的大部分看起来都会是相同的,但细微的差别还是存在的。赞成 PSU 的回答。 - joelc