问一个简单问题:如何一次性修改多条记录?修改的值从其他表来

demonwinwin 2005-06-16 11:52:48
类似这种的
insert into tablename1 (select * from tablename2)
有没有
update tablename set (select ...)
或者是
update tablename set a=(select a from tablename2 where tablename2.a=tablename.a)

应该怎么写
求大家帮帮忙?
...全文
166 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
demonwinwin 2005-07-26
  • 打赏
  • 举报
回复
应该可以
可能是我有些字段是不容许NULL的
所以有错误
waterfirer 2005-07-15
  • 打赏
  • 举报
回复
把你的sql贴出来吧,上面的办法肯定是可行的。
demonwinwin 2005-07-15
  • 打赏
  • 举报
回复
好像都不行呢,说什么null值无法更新
sfbird 2005-06-20
  • 打赏
  • 举报
回复
可以使用merge
for example;
merge into a
using (select * from B)b
on (same as where clause: a.name =b.name and a.year = b.year)
when matched then
(update set a.class = b.class)
when not matched then
insert(a.name,a.year,a.class) values (b.name,b.year,b.class)
根据你的需要,可以操作多条记录(修改或添加)^_^
good luck
fzyer000 2005-06-18
  • 打赏
  • 举报
回复
以上的方法都可以。
china_ren5160 2005-06-17
  • 打赏
  • 举报
回复
update tablename set (col1,col2,...,coln) = (select (col1,col2,...,coln) from tablename2 where tablename2.a=tablename.a)
liuyann 2005-06-17
  • 打赏
  • 举报
回复
update tablename
set a=(select max(a) from tablename2 where tablename2.a=tablename.a)
tony817991 2005-06-17
  • 打赏
  • 举报
回复
update tablename set a=(select a from tablename2 where tablename2.b=tablename.b)
where tablename.b in (select b from tablename2)

guangli_zhang 2005-06-17
  • 打赏
  • 举报
回复
update tablename set a=(select a from tablename2 where tablename2.a=tablename.a)
where exists(select 1 from tablename2 where tablename2.a=tablename.a)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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