SQL Server 将随机数据从一个表复制到另一个表



我有 2 个表stuffnonsense.nonsense的大小与stuff不同;在这种情况下,它的行较少,但可能更多。

结构是这样的:

CREATE TABLE stuff (
id INT PRIMARY KEY,
details VARCHAR(MAX),
data VARCHAR(MAX)
);
CREATE TABLE nonsense (
id INT PRIMARY KEY,
data VARCHAR(MAX)
);

stuff表中已经填充了details,但data现在NULL

我想将数据从nonsense随机复制到每一行stuff中。由于nonsense较小,自然会有重复项,这没关系。

不起作用

UPDATE stuff
SET data=(SELECT TOP 1 data FROM nonsense ORDER BY NewId());

据推测,子查询在查询的其余部分之前被计算一次。然而,这就是我想要的结果。

我该如何实现这一点?

您需要关联子查询才能为每条记录运行它。

UPDATE stuff
SET data=(SELECT TOP 1 data 
FROM nonsense 
where stuff.id = stuff.id  --here
ORDER BY NewId());

最新更新