2017-07-29 79 views
0

我有2個表stuffnonsensenonsensestuff的尺寸不同;在這種情況下,它有更少的行,但它可能有更多。SQL Server從一個表複製隨機數據到另一個表

的結構是這樣的:

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,但dataNULL現在。

我想從數據的nonsense一個一行隨機複製到的stuff每一行。由於nonsense較小,自然會有重複,這是可以的。

這並不工作:

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

想必子查詢的查詢的其餘部分之前評估一次。但是,這是我想要的那種結果。

如何存檔?

+0

*這不起作用,*您的意思是相同的值更新爲數據列中的所有記錄? –

回答

1

您需要關聯子查詢才能爲每條記錄運行該查詢。

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

太棒了!這是如何運作的?那是一種魔法嗎? – Manngo

+0

@Manngo - where子句使子查詢對每一行執行 –

相關問題