2013-08-21 18 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