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 行)
*/