我有一张表已有数据。
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
答案 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 )