我有两个表,一个联系人表和一个地址表.地址表包含联系人ID和4个地址行.我希望使用地址表中的信息更新联系人表.为简单起见,让表格如下:
地址(
.intact
int not null,
.address1 varchar(32)not null,
.address2 varchar(32)not null
)
contacts(
.id int primary key,
.addr1 varchar(32)not null,
.addr2 varchar(32)not null
)
如何(int tsql)从地址表更新联系人表?
谢谢.
你没有.您的架构已损坏.您正在多个地方重复地址数据.
你的架构应该是这样的
addresses(
. id int primary key,
. address1 varchar(32) not null,
. address2 varchar(32) not null
)
contacts(
.id int primary key
.addressId int foreign key (addresses.id)
}
Run Code Online (Sandbox Code Playgroud)
因此,要获取联系人的地址,您将执行以下连接:
select
c.id contactId,
a.address1,
a.address2
from
contacts c
join addresses a on
c.addressId=a.id
where
c.id=@someContactId
Run Code Online (Sandbox Code Playgroud)
并更新您将执行以下操作:
update a
set a.address1='27 Foo Street'
from
addresses as a
join contacts as c
on a.id=c.addressId
where c.id=@someContactId
Run Code Online (Sandbox Code Playgroud)
在数据库中复制数据很少是个好主意.搜索术语数据库规范化以获取有关此主题的更多信息.