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

初学sql:如何写这条sql语句
表A有字段(编号,名称),表B有字段(编号,功能描述,分类,名称),表B中的名称为空,请问如何通过sql语句更新表B中的“名称”字段内容并满足A.编号=B.编号,A.名称=B.名称,如

表A
编号 名称
1 跑步机
2 篮球


表B
编号 功能描述 分类 名称
2 健身 球类  
1 健身 器材 

得出的结果为
表B
编号 功能描述 分类 名称
2 健身 球类 篮球  
1 健身 器材 跑步机
 请问这条sql语句如何写?

------解决方案--------------------
select * from 表B inner join 表A on 表B.编号=表A.编号
------解决方案--------------------
SQL code
update a set a.名称=b.名称
from A a,B b where a.编号=b.编号

------解决方案--------------------
SQL code
update 表B set 
   名称 = 表A.名称
from 表A 
where 表B.编号=表A.编号

------解决方案--------------------
SQL code

update 表B set 名称=表A.名称 from 表B inner join 表A on 表B.编号=表A.编号

------解决方案--------------------
SQL code

declare @表A table (编号 int,名称 varchar(6))
insert into @表A
select 1,'跑步机' union all
select 2,'篮球'

declare @表B table (编号 int,功能描述 varchar(4),分类 varchar(4),名称 varchar(6))
insert into @表B
select 2,'健身','球类',null union all
select 1,'健身','器材',null

update @表B
set 名称=a.名称 
from @表B b left join @表A a on b.编号=a.编号

select * from @表B
/*
编号          功能描述 分类   名称
----------- ---- ---- ------
2           健身   球类   篮球
1           健身   器材   跑步机
*/

------解决方案--------------------
SQL code

declare @表A table (编号 int,名称 varchar(6))
insert into @表A
select 1,'跑步机' union all
select 2,'篮球'

declare @表B table (编号 int,功能描述 varchar(4),分类 varchar(4),名称 varchar(6))
insert into @表B
select 2,'健身','球类',null union all
select 1,'健身','器材',null

update @表B
set 名称=a.名称 
from @表B b left join @表A a on b.编号=a.编号

select * from @表B
/*
编号          功能描述 分类   名称
----------- ---- ---- ------
2           健身   球类   篮球
1           健身   器材   跑步机
*/