SQL中的update如何解决多条记录更新的问题?在线等待,急急(50分)

H

hunyuan

Unregistered / Unconfirmed
GUEST, unregistred user!
表1和表2中有两个同名同类型长度的字段 a,b
表2是a和b的对照表
表1中字段b为空,字段a有内容

现在想实现根据表2两个字段的对应条件,更新表1中字段b,用一条SQL能解决吗?

非常感谢!

表1
a b
000
111
222


表2
a b
000 9988998
111 8899889
222 8989898
 
干麻非得用一条sql啊?
 
update 表1
set 表1.b=表2.b
from 表1,表2
where 表1.a=表2.a

试一试,因该可以的!
 
update 表1 set b=(select b from 表2 where 表2.a=表1.a)
注意大多数数据库支持,但是可能少数数据库特别是桌面数据库则可能不支持
 
同意pipi.的,上面那个不行的
 
明白了,简单!
 
TO:pipi
这样写出错
ORA-01427: 单行子查询返回了多行
 
呵呵,看看这里:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=708532
 
写多句行不行????

呆呵,然后执行。
 
至少在SQLSERVER中zhihui的写法是对的,而Pipi的写法是错的
 
而且从语法上来分析PIPI的写法也不对啊,会出现一对多的情况
 
单行子查询返回了多行,说明你的表2并不唯一,不唯一的情况下,你该用什么值来填写表1呢
 
如果表2凡是重复的,b都是一样的值,那么
update 表1 set b=(select min(b) from 表2 where 表2.a=表1.a) 可以保证返回唯一值
看你错误信息,你的是oracle,我的命令就是合法的,而zhihui的命令在oracle不支持
 
同意pipi的说法,表二不惟一是不行的
 
多人接受答案了。
 
顶部