2013-08-21 19 views
0

我得到了一個包含forename和surname的表,它需要隨機數據進行更改,但可用於測試目的。所以我在另一個數據庫中創建了另一個帶有隨機姓名和姓氏的表格。我想用我創建的隨機姓名和姓氏更新測試數據庫。另外我想重新排列更新的名字以防萬一,如果你理解我的意思,我不希望它被更新。使用虛擬數據更新敏感列SQL查詢

我得到這個查詢

update DB1.table 
set Forename = (???? from DB2.table (Forename)??????) 
where Forename is not null 
+0

這是MS SQL嗎? – RobJohnson

+0

是的,它是MS SQL – MohammedT

回答

2
Declare @Id int 

DECLARE db_cursor CURSOR FOR 
SELECT Id 
FROM DB1.dbo.table 
WHERE Forename is not null 

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @id 

WHILE @@FETCH_STATUS = 0 
BEGIN 
     update DB1.dbo.table 
     set Forename = (select top(1) Forename from DB2.dbo.table order by newid()) 
     where Id = @id 

     FETCH NEXT FROM db_cursor INTO @id 
END 

CLOSE db_cursor 
DEALLOCATE db_cursor 

將與來自table1的一個隨機用的名字從表2

更新每個用的名字,然後你可以做的姓氏相同,這會混雜起來用的名字/表2中的姓氏,我認爲這是你最後一行的意思......

+0

它做了什麼,它更新了所有具有相同名稱的列。所以我現在有一個完整列的名字重複。 – MohammedT

+0

對不起,你需要使用遊標,我更新了我的答案,這裏假設你的表有一個唯一的id列循環。 – RobJohnson

+0

我得到這個錯誤 消息206,級別16,狀態2,行13 操作數類型衝突:唯一標識符是與詮釋不相容 – MohammedT