我有 2 个表stuff
和nonsense
.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());