我需要用随机值填充新列Column2
。
在Column1
中具有匹配值的所有行应具有相同的随机值。
我的方法是在第一列上执行自联接,然后将RAND()
生成的值分配给Column2
。
UPDATE table AS t
JOIN (SELECT DISTINCT Column1 FROM table) t1
ON t.Column1 = t1.Column1
SET Column2 = RAND()
预期结果类似于:
Column1 | Column2
--------+--------
alpha | 0.766
alpha | 0.766
beta | 0.234
但是实际结果是:
Column1 | Column2
--------+--------
alpha | 0.766
alpha | 0.329
beta | 0.234
答案 0 :(得分:1)
尝试为子查询中的每个Column1
组生成随机值:
UPDATE table AS t
INNER JOIN
(
SELECT DISTINCT Column1, RAND() rnd
FROM table
WHERE 1 = 1
) t1
ON t.Column1 = t1.Column1
SET Column2 = t1.rnd;
这至少应该可以解决当前问题,即您有多个记录属于同一Column1
值,并且分配了不同的Col2
值。我将WHERE 1 = 1
子句添加到了子查询中,以防MySQL试图变得更聪明并缓存RAND()
的结果以重用它。