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

问一个联合修改数据的问题
有两个表如:
-----------------------第一个表(Table1)---------------
姓名 年龄 性别
张三 18 男
李四 19 女
-----------------------第二个表(Table2)-----------------
姓名 身高
张三 160
李四 150
---------------------------------------------------
现在我想把第一个表扩展,把第二个表的身高也放在第一个表。于是我就修改第一个表Table1
姓名 年龄 性别 身高
张三 18 男 ?
李四 19 女 ?

问题是我怎么样把Table2的身高用SQL语句更新到Table1中的“身高”中。这两个表是主外键妆联的。


------解决方案--------------------
SQL code
update tb1
set 身高=tb2.身高
from tb1 join tb2 on tb1.姓名=tb2.姓名

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

--> 测试数据:[Table1]
if object_id('[Table1]') is not null drop table [Table1]
create table [Table1]([姓名] varchar(4),[年龄] int,[性别] varchar(2))
insert [Table1]
select '张三',18,'男' union all
select '李四',19,'女'
--> 测试数据:[Table2]
if object_id('[Table2]') is not null drop table [Table2]
create table [Table2]([姓名] varchar(4),[身高] int)
insert [Table2]
select '张三',160 union all
select '李四',150

--给第一个表添加身高字段
alter table [Table1] add [身高] int
go
--更新第一个表的数据:
update [Table1]
set [Table1].[身高]=a.[身高] from [Table2] a
where a.姓名=[Table1].姓名
--验证:
select * from [Table1]

/*
姓名    年龄    性别    身高
张三    18    男    160
李四    19    女    150
*/

------解决方案--------------------
我猜想楼主的两个表是通过姓名主外键妆联的
SQL code

UPDATE t1
SET t1.身高 = t2.身高
FROM Table1 AS t1
INNER JOIN Table2 AS t2 ON t1.姓名=t2.姓名

------解决方案--------------------
update Table1
set 身高=Table2.身高
from Table2
where Table1.姓名=Table2.姓名