我有唯一的列 url varchar(4),并想将其更新为唯一的随机字符串,但遇到重复项目的问题。 所以我想创建类似这样的循环,但在定位两次相同的表时遇到问题。
UPDATE IGNORE word SET url = (SELECT GROUP_CONCAT(SUBSTRING('1234567890qwertyuiopasdfghjklzxcvbnm' , 1+ FLOOR(RAND()*LENGTH('1234567890qwertyuiopasdfghjklzxcvbnm')) ,1) SEPARATOR '')
FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS dummy_tbl)
WHERE EXISTS (SELECT url FROM word WHERE url IS NULL);
使用单个查询填充我的列的最佳方法是什么?
最佳答案
您应该删除 EXISTS
子句并直接更新 NULL
行:
UPDATE
IGNORE word
SET url = ...
WHERE url IS NULL;
因此您的完整查询将是:
UPDATE
IGNORE word
SET url =
(SELECT GROUP_CONCAT(SUBSTRING('1234567890qwertyuiopasdfghjklzxcvbnm',
1+ FLOOR(RAND()*LENGTH('1234567890qwertyuiopasdfghjklzxcvbnm')),1) SEPARATOR '')
FROM
(SELECT 1
UNION SELECT 2
UNION SELECT 3
UNION SELECT 4) AS dummy_tbl)
WHERE url IS NULL;
关于mysql - 使用 where exists 语句更新具有唯一字符串的表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42694286/