SQL脚本用于从另一个表输入数据并在源表中创建一个列以链接另一个表

时间:2012-12-27 10:07:37

标签: sql

我有一张表已有数据。

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

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

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

请帮忙。

到目前为止,我已经尝试过这么多。

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

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

tahnks

1 个答案:

答案 0 :(得分:1)

首先,您需要将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 ) 

现在我们应该在BRANCHES中填写AddressID字段:

update BRANCHES SET AddressId=(select TOP 1 AddressId from Address where 
                                   Address1=BRANCHES.Address1
                                    and 
                                   Address2=BRANCHES.Address2 )