0

我有 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());

大概子查询在查询的其余部分之前被评估一次。然而,这正是我想要的结果。

我如何做到这一点?

4

1 回答 1

1

您需要关联子查询以针对每条记录运行它。

UPDATE stuff
SET data=(SELECT TOP 1 data 
          FROM nonsense 
          where stuff.id = stuff.id  --here
          ORDER BY NewId());
于 2017-07-29T04:37:38.147 回答