问条SQL语句

java__net 2010-10-25 03:52:17
a表和b表两个表的字段是完全一致的,现在想将A表中所有与b表中字段name相同,其他字段不同的记录,更新B表
...全文
86 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

22,209

社区成员

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

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