请问:两表连接的更新sql语句应该如何写?

icbm 2005-03-19 12:40:16
我有两张表:
tab1(val) tab2(old, new)

tab1的内容:

val
-----
11
22
33
44

tab2的内容:

old new
---------
11 1111
22 2222
33 3333
44 4444

select val, old, new from tab1 inner join tab2 on val=old;

结果如下:

val old new
----- ---------
11 11 1111
22 22 2222
33 33 3333
44 44 4444

我想做这样一个更新:

把tab1和tab2做内联接,然后把同一行中的val的值更新为new。

就是说,如果tab1中的记录val的值等于tab2中的old,就把这条记录的val值更新为tab2中的new值。

更新语句执行完成后,tab1中的内容为:
val
-----
1111
2222
3333
4444



请问:sql语句应该怎样写?
...全文
245 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ohui 2005-03-19
  • 打赏
  • 举报
回复
update a set a.val=b.new from tab1 a ,tab2 b where a.val=b.old
631799 2005-03-19
  • 打赏
  • 举报
回复

update a set a.val=b.new from tab1 a inner join tab2 b on a.val=b.old
xluzhong 2005-03-19
  • 打赏
  • 举报
回复
create table a(val int)
create table b(old int,new int)
insert into a select '11' union all select '22' union all select '33' union all select '44'
insert into b select '11','1111' union all select '22','2222' union all select '33','4444' union all select '44','4444'
go

update a
set val=b.new
from a inner join b
on a.val=b.old

select * from a

drop table a
drop table b
lishengyu 2005-03-19
  • 打赏
  • 举报
回复
update a set a.val=b.new from tab1 a join tab2 b on a.val=b.old

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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