日期:2014-05-18  浏览次数:20471 次

SQL 2008,表AA中有列:日期,电话;表BB中有列:电话,姓名;要在表AA中新增列:姓名,当电话.AA=电话.BB,在表AA中赋值姓名(原表中改变)。
如题。
表AA有二列:
日期、电话
2011-05-20 13508740001  
2011-05-20 13388889999  
2011-05-21 13677774444  

表BB有二列:
电话 、姓名
13508740001 张三  
13388880000 李四  
13388800007 王二  
13388889999 赵六 

要求变成如下格式(当对应的电话没有相关姓名时,姓名为空。要求在原表中改变,而不是只显示查询结果,原表却没变,谢谢!)
日期、电话、姓名
2011-05-20 13508740001 张三
2011-05-20 13388889999 赵六
2011-05-21 13677774444  


测试数据如下:
create table AA(日期 varchar(10),电话 varchar(10))
insert into tb values('2011-05-20', '13508740001')
insert into tb values('2011-05-20', '13388889999')
insert into tb values('2011-05-21', '13677774444')

create table BB(电话 varchar(10),姓名 varchar(10))
insert into tb values('13508740001', '张三')
insert into tb values('13388880000', '李四')
insert into tb values('13388800007', '王二')
insert into tb values('13388889999', '赵六')

------解决方案--------------------
SQL code
create table AA(日期 varchar(10),电话 varchar(20))
insert into aa values('2011-05-20', '13508740001')
insert into aa values('2011-05-20', '13388889999')
insert into aa values('2011-05-21', '13677774444')

create table BB(电话 varchar(20),姓名 varchar(20))
insert into bb values('13508740001', '张三')
insert into bb values('13388880000', '李四')
insert into bb values('13388800007', '王二')
insert into bb values('13388889999', '赵六')

go

alter table aa add 姓名 varchar(20) null
go

update aa set 姓名 = bb.姓名 from aa , bb where aa.电话 = bb.电话

select * from aa


drop table aa , bb

/*
日期         电话                   姓名                   
---------- -------------------- -------------------- 
2011-05-20 13508740001          张三
2011-05-20 13388889999          赵六
2011-05-21 13677774444          NULL

(所影响的行数为 3 行)
*/