两个结构完全相同的表,如果有某字段相同的话,两个表都更新这个字段,请问这个如何实现?

例如,表A和表B结构相同,都只有两个字段,name,age单个表中的name是不可相同的但是A,B中都有name为zhangsan的字段,我想将这两个字段分别更新为A_z... 例如,表A和表B结构相同,都只有两个字段,name,age
单个表中的name是不可相同的
但是A,B中都有name为zhangsan的字段,我想将这两个字段分别更新为A_zhangsan,B_zhangsan,请问该如何做?
主要的问题是如何同时更新两张表的数据的问题,高手麻烦解答下啊

补充:
比如表A:
zhangsan 18
lisi 20
wangwu 21
表B:
zhaoliu 17
zhangsan 15
wangmazi 22
这种结构的,我想查询到两个表都有zhangsan存在时,分别更新为A_zhangsan,B_zhangsan
数据库是mysql
展开
 我来答
紫仑天玑
2013-07-01 · 萝卜数学关注思维过程
紫仑天玑
采纳数:324 获赞数:888

向TA提问 私信TA
展开全部

一般是采用临时表,触发器更新,函数运算 这些方式

临时表消耗IO,触发器可能环节不统一,函数运算就是更新后的字段还原叠加(A_zhangsan 去掉前缀级联,虽然不用临时表,但是也有一定的风险)


举一个临时表的例子:使用@A,@B 临时表变量模拟你的两个表,@T模拟临时表

使用事务更新

declare @A table (name varchar(30),age int)
declare @B table (name varchar(30),age int)
declare @T table (name varchar(30))
insert into @A
select 'zhangsan','54' union all
select '郑和','54' union all
select '曹操','54' union all
select '关羽','46'  

insert into @B
select 'zhangsan','54' union all
select '郑和','54' union all
select '曹操','54' union all
select '关羽','46'  

insert into @T
select A.name
from @A A inner join @B B on(A.name=B.name)

begin tran
--
if exists(select null from @T)
begin
update A
set A.name='A_'+A.name
from @A A inner join @T T on(A.name=T.name)
update B
set B.name='B_'+B.name
from @B B inner join @T T on(B.name=T.name)
end
--
if @@trancount>0 commit tran

select * from @A
select * from @B


追问
感谢!我想问下有更简单的方法吗?我只是想update A之后仍然能找到那条B中的数据,这样才能update B,可以通过查找其他字段的索引来更新吗?其实实际表中是有一个不重复的id字段的。我的数据库是mysql
追答

你不早说,以上只是各种数据库比较通用的方法。

但是mysql 支持多表更新。

rt...f@163.com
2013-07-02
知道答主
回答量:10
采纳率:0%
帮助的人:3.8万
展开全部
一般是采用临时表,触发器更新,函数运算 这些方式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tq0cdxa
2013-07-01 · TA获得超过123个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:210万
展开全部
UPDATE A SET name = 'A_' + name WHERE name in (SELECT name FROM B);
UPDATE B SET name = 'B_' + name WHERE name in (SELECT name FROM A);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自大头爸爸的爱
2013-07-02 · 超过31用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:89.8万
展开全部
将2个update放到一个事务里面执行.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式