通过基于表行选择值来从另一个表更新SQL字段

问题描述 投票:-1回答:1

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

sql tsql
1个回答
0
投票

这是使用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
© www.soinside.com 2019 - 2024. All rights reserved.