查找并替换具有不同数据类型的两个表列之间的值

时间:2012-11-29 11:35:18

标签: sql sql-server-2008 tsql

我在sql server 2008中有两个表

TBL_CustomerMaster
[FilingId] [numeric]  (18, 0) NOT NULL,
[CustId]   [nvarchar] (500)   COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,

TBL_Customer
[FilingId]  [numeric]  (18, 0) NOT NULL,
[CustUnqId] [numeric]  (18, 0) NOT NULL,
[CustId]    [nvarchar] (500)   COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,

我使用批量插入将数据加载到每个FilingId的两个表中,两个表的CustId是相同的。我为TBL_Customer生成了唯一的CustUnqId

现在我想将CustUnqId映射到TBL_CustomerMaster的CustId 一世。即将TBL_CustomerMaster中的CustId替换为相应的CustUnqId表单TBL_Customer

请提出解决方案。

1 个答案:

答案 0 :(得分:2)

您可以尝试这一点,但将其包含在事务中并在将任何内容放入生产环境之前进行测试:

SELECT  a.CustId,
        b.CustUnqId
INTO    #temp
FROM    TBL_CustomerMaster a
JOIN    TBL_Customer b ON
        a.CustId = b.CustId

UPDATE  TBL_CustomerMaster
SET     CustId = t.CustUnqId
FROM    TBL_CustomerMaster a
JOIN    #temp t ON
        t.CustId = a.CustId