问条SQL语句

java__net 2010-10-25 03:52:17
a表和b表两个表的字段是完全一致的,现在想将A表中所有与b表中字段name相同,其他字段不同的记录,更新B表
...全文
66 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
daishaodong 2010-10-25
比较a、b表,把a表中name字段相同,其他某一个字段不同的记录都into到临时表,再把临时表记录插入b表。
回复
java__net 2010-10-25
说的明白一点就是,A表是分公司的信息表,b表是总公司的信息总表,但分公司信息表数据有更新的时候,需要同时更新总表,这2个表的机构一样,但数据是包含关系
回复
java__net 2010-10-25
哦,刚反应过来,一楼的方法不对,我这2个表的字段一样,不代表数据都一样,A表要比B表的数据少,这个方法肯定不行
回复
daishaodong 2010-10-25
1楼的方法的确能实现,删除b表所有行,插入a表的记录。
楼主的提问有点绕人。。。
回复
java__net 2010-10-25
[Quote=引用 1 楼 dawugui 的回复:]
引用楼主 java__net 的回复:
a表和b表两个表的字段是完全一致的,现在想将A表中所有与b表中字段name相同,其他字段不同的记录,更新B表

truncate table b
insert into b select * from a
[/Quote]

name不是主键,这里不用加条件么?
回复
Rotel-刘志东 2010-10-25
---完全删除表结构了
truncate table a
insert into b select * from a
回复
哥本哈士奇 2010-10-25
说正题,用merge,前提是你是SQLServer2008.

merge test2 b --要更新的目标表
using test1 a --源表
on a.name=b.name and a.xxx<>b.xxx --更新条件(即主键)
when matched --如果主键匹配,更新
then update set b.xxx=a.xxx
回复
哥本哈士奇 2010-10-25
一楼实在强悍,过来膜拜下。
回复
claro 2010-10-25
。。。唉,我理解能力越来越差了。
回复
ForFumm 2010-10-25
name 唯一?
回复
dawugui 2010-10-25
[Quote=引用楼主 java__net 的回复:]
a表和b表两个表的字段是完全一致的,现在想将A表中所有与b表中字段name相同,其他字段不同的记录,更新B表
[/Quote]
truncate table b
insert into b select * from a
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-25 03:52
社区公告
暂无公告