TSQL表间更新

0 sql t-sql sql-server

我有两个表,一个联系人表和一个地址表.地址表包含联系人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)从地址表更新联系人表?
谢谢.

spe*_*der 5

你没有.您的架构已损坏.您正在多个地方重复地址数据.

你的架构应该是这样的

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)

在数据库中复制数据很少是个好主意.搜索术语数据库规范化以获取有关此主题的更多信息.