我有一个db表,其中包含由数据创建工具创建的随机个人详细信息。
我想使用此表中的值来更新另一个表中的字段,以便在对另一台服务器上的问题进行故障排除时掩盖实时个人详细信息。
表格如下:
表1:tblRandom_Data
字段:名字|姓
表2:tblCustomers
字段:CustomerID [GUID] |名|姓| Address_Line1 ..........
我想通过从tblRandom_Data中选择一个随机的First_Name值来更新tblCustomers中所有行的First_Name字段。
我已经尝试了以下操作,但这会更新所有具有相同随机名字的行。所有值不必都是唯一的,但是需要有所不同。
Update tblCustomers
set First_Name = (SELECT TOP 1 First_Name FROM tblRandom_Data
ORDER BY NEWID())
这是使用row_number()
和可更新的CTE的一种方法:
with cte as (
select
c.first_name,
c.surname,
r.first_name r_first_name,
r.surname r_surname,
row_number() over(partition by c.customer_id order by newid()) rn
from tblCustomers c
cross join tblRandom_Data r
)
update cte
set first_name = r_first_name, surname = r_surname
where rn = 1