高分求教:有重复值怎么办,急!

oklemon 2004-03-15 05:28:11
有2个表,表1有(姓名,年龄)2个字段,表2的结构和表1一样。
现在表1的姓名列和表2的姓名列值相同,把表2中相同名字的年龄字段怎么插入到表1的年龄字段中?

注:在数据中有重复的姓名

请帮忙写一下SQL语句!谢谢了!
...全文
56 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
oklemon 2004-03-15
  • 打赏
  • 举报
回复
问题解决,谢了大侠!给分:)
zjcxc 2004-03-15
  • 打赏
  • 举报
回复
--测试

--测试数据
create table 表1(age int,name varchar(10),id int)
insert 表1 select null,'lemon',1
union all select null,'lemon',2
union all select null,'lemon',3
union all select null,'jack',4
union all select null,'jack',5
union all select null,'mike',6

create table 表2(age int,name varchar(10),id int)
insert 表2 select 21,'lemon',1
union all select 33,'lemon',2
union all select 25,'lemon',3
union all select 32,'jack',4
union all select 28,'jack',5
union all select 32,'mike',6
go

--更新处理(不知道表2中,姓名相同的,你取那个年龄,我假设你取最后一个吧)
update 表1 set age=b.age
from 表1 a join 表2 b on a.name=b.name
go

--显示处理结果
select * from 表1
go

--删除测试环境
drop table 表1,表2

/*--测试结果
age name id
----------- ---------- -----------
25 lemon 1
25 lemon 2
25 lemon 3
28 jack 4
28 jack 5
32 mike 6

(所影响的行数为 6 行)
--*/
oklemon 2004-03-15
  • 打赏
  • 举报
回复
举个例子吧:
表1
age name id
lemon 1
lemon 2
lemon 3
jack 4
jack 5
mike 6


表2
age name id
21 lemon 1
33 lemon 2
25 lemon 3
32 jack 4
28 jack 5
32 mike 6
表1有6个不同的人,但是有姓名重复的,需要从表2中得到年龄值
zjcxc 2004-03-15
  • 打赏
  • 举报
回复
--你的意思是否这样? 如果姓名相同的,将年龄用表2的值替换,如果姓名不在表1中的,则插入?

--如果是这个要求的话,就这样做:

--先更新存在的
update 表1 set 年龄=b.年龄
from 表1 a join 表2 b on a.姓名=b.姓名

--再插入不存在的
insert 表1(姓名,年龄)
select a.姓名,a.年龄
from 表2 a left join 表1 b on a.姓名=b.姓名
where b.姓名 is null
oklemon 2004-03-15
  • 打赏
  • 举报
回复
表1中有主键值可以区别的不同的人!
oklemon 2004-03-15
  • 打赏
  • 举报
回复
各位,不能用INSERT呀,INSERT是插入新的记录呀!表1中就差年龄字段需要从表2中提取呀!
LoveSQL 2004-03-15
  • 打赏
  • 举报
回复
你的表如果还有其他字段,应该有个主键,否则做更新的时候没办法定位哪一行!
oklemon 2004-03-15
  • 打赏
  • 举报
回复
把表2插入表1的时候,遇到了有相同姓名的人,但是他们的年龄不一样,要把表2年龄插入相应人的年龄中。

表1 还有其他的是字段,也就是说,即使同名的人,其他值也不同。目前表1的年龄还没有值,要从表2中提取
LoveSQL 2004-03-15
  • 打赏
  • 举报
回复
delete table1--先把表一纪录删掉

insert table1 select * from table2--把表二记录插入表一

以上做法适合表一只有两个字段,如果还有其他字段就不对了。

zjcxc 2004-03-15
  • 打赏
  • 举报
回复
--还是更新?

update 表1 set 年龄=b.年龄
from 表1 a join 表2 b on a.姓名=b.姓名
zjcxc 2004-03-15
  • 打赏
  • 举报
回复
--插入?

insert 表1(姓名,年龄)
select 姓名,年龄
from 表2 a
where exists(select 1 from 表1 where 姓名=a.姓名)
Rotaxe 2004-03-15
  • 打赏
  • 举报
回复
insert into 表1 select * from 表2

insert into 表1 select 姓名, max(年龄) from 表2 group by 姓名
leeboyan 2004-03-15
  • 打赏
  • 举报
回复
select * into #temp from table1
union
select * from table2
truncate table table1
insert into table1 select * from #temp
wzh1215 2004-03-15
  • 打赏
  • 举报
回复
不是很明白!
把表2中相同名字的年龄字段怎么插入到表1的年龄字段中?
--是插入还是修改,插入是把相同的都插入,还是只插入一个。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧