-3

我有一个表,其中已经有数据。

Table -> Address:
AddressID, Address 1, Address 2, email etc...

Table -> Branches:
BranchesID, StoreName, Address 1, Address 2

现在我需要一个脚本,它可以将所有数据从 Branches 表复制到 Address 表,并在 Branches 中创建一个列,其中包含新复制数据的 AddressID,这样我就可以使用地址表引用 Branches 地址。

请帮忙。

到目前为止,我已经尝试了很多。

INSERT Address1, Address2, City, ZipCode)
OUTPUT AddressID
INTO Addresses
SELECT Address1, Address2
FROM Baranches;

但我不知道如何将地址表中新创建的记录 ID 插入到 Braches 表中......

坦克

4

1 回答 1

2

首先,您需要将AddressId字段添加到Branches. 我不知道您使用什么 RDBMS,所以这里是 MSSQL 的一个示例,但它应该适用于所有 RDBMS,只需进行一些更改:

ALTER TABLE BRANCHES ADD AddressID bigint;

然后将地址branches插入Address表中。我猜AddressId是自动增量PK?WHERE此查询中的语句允许避免地址重复。

insert into ADDRESS (Address1, Address2)
select Address1, Address2 
    from BRANCHES 
      where 
       not exists(select AddressID 
                        from ADDRESS 
                        where Address1=BRANCHES.Address1
                              and 
                              Address2=BRANCHES.Address2 ) 

现在我们应该填写AddressIDBRANCHES 中的字段:

update BRANCHES SET AddressId=(select TOP 1 AddressId from Address where 
                                   Address1=BRANCHES.Address1
                                    and 
                                   Address2=BRANCHES.Address2 )
于 2012-12-27T11:02:32.517 回答