表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 @表Aselect 1,'跑步机' union allselect 2,'篮球'declare @表B table (编号 int,功能描述 varchar(4),分类 varchar(4),名称 varchar(6))insert into @表Bselect 2,'健身','球类',null union allselect 1,'健身','器材',nullupdate @表Bset 名称=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 @表Aselect 1,'跑步机' union allselect 2,'篮球'declare @表B table (编号 int,功能描述 varchar(4),分类 varchar(4),名称 varchar(6))insert into @表Bselect 2,'健身','球类',null union allselect 1,'健身','器材',nullupdate @表Bset 名称=a.名称 from @表B b left join @表A a on b.编号=a.编号select * from @表B/*编号 功能描述 分类 名称----------- ---- ---- ------2 健身 球类 篮球1 健身 器材 跑步机*/