SQL update 的更新值来源于另外一个表,如何实现?

如题UPDATE的更新的值是要由另外一个表查询得出,要如何实现呢?
可以这样吗
update 表A set 字段1=(select 值 from 表B)

注意,我更新的值不只有一个,我要批量更新,表A与表B有链接字段C
是这个意思(主要是在ACCESS中):
例如表A有字段1,字段2. 字段1与表B有连接字段,字段2值为空,结构举例:
表A
字段1 字段2
1
2
3
4
5

表B有字段3 字段4,字段3与表A是连接字段关系,字段4是表A字段2要更新的值,表B举例如下:

字段3 字段4
1 11
2 22
3 33

现在我想按照连接字段的关系将表B的字段4的值更新到表A的字段2中,形成表A的形式最后为下面:
表A
字段1 字段2
1 11
2 22
3 33
4
5

1、创建两个测试表,

create table test_up_a(id number, value varchar2(100));

create table test_up_b(id number, value varchar2(100));

2、分别往两个表中插入数据;

insert into test_up_a values(1,'A1');

insert into test_up_a values(2,'A2');

insert into test_up_a values(3,'A3');

insert into test_up_a values(4,'A4');

insert into test_up_a values(5,'A5');

insert into test_up_a values(6,'A6');

insert into test_up_b values(1,'BBBB1');

insert into test_up_b values(2,'BBBB2');

insert into test_up_b values(5,'BBBB5');

commit;

3、分别查看两个表中数据;

select 'TBL_A', t.* from TEST_UP_A t

union all

select 'TBL_B', t.* from TEST_UP_B t


4、执行更新脚本,可以发现TEST_UP_A.VALUE值已变化;

update TEST_UP_A t

   set t.value =

       (select b.value

          from TEST_UP_B b

         where t.id = b.id

           and rownum = 1)


温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-26
update
好像是不能同时更新两个表的
楼主想同时更新这两个表而采用单个更新是因为2个表的约束关系
其实还有一个办法
就是先把两个表的约束关系都停用了
然后用2条语句将2个表分别更新,更新完了以后再启用两个表的约束关系就可以了
第2个回答  推荐于2018-05-07
update 表A,表B set 表A.字段2=表B.字段4 where 表A.字段1=表B.字段3

正确答案,错了管饭本回答被提问者和网友采纳
第3个回答  2010-05-21
这样就可以了:
update 表A as a,表B as b set a.字段1=b.字段 where a.字段C=b.字段C;
----------------------------------------------------------------------
针对问题补充:
update 表A as a,表B as b set a.字段2=b.字段4 where a.字段1=b.字段3;
第4个回答  2010-05-21
update a set a.字段2 = b.字段2 from 表A,表B where a.字段1 = b.字段1

SQL update 的更新值来源于另外一个表,如何实现?
1、创建两个测试表,create table test_up_a(id number, value varchar2(100));create table test_up_b(id number, value varchar2(100));2、分别往两个表中插入数据;insert into test_up_a values(1,'A1');insert into test_up_a values(2,'A2');insert into test_up_a values(3,...

sql update语句 一张表的数据更新到另一张表
在数据库操作中,SQL的UPDATE语句用于更新表中的数据。当您需要将一张表的数据更新到另一张表时,可以使用JOIN操作将两个表连接起来,并根据特定条件进行数据迁移。例如,假设您有两张表:tbl_1 和 tbl_2。在这两个表中,表tbl_1的类别字段和表tbl_2的物料组描述字段值相同,您希望将表tbl_2的...

UPDATE语句:将一个表里的字段更新到另一个表的字段里的语句
考虑到这个需求,我们可以通过使用UPDATE语句结合JOIN操作来实现目标。比如,假设我们有两张表,A和B,其中表A包含id和subject_id字段,而表B包含sb_id和student_id字段。我们的目标是将B表的sb_id复制到A表的subject_id字段中,对应的SQL语句如下:1. UPDATE A SET A.subject_id = B.sb_id FROM...

SQL,我要把一个表的信息插入到另一个表里面,如果遇到重复的就覆盖掉,怎...
你的想法应该用两个语句来实现,第一个是更新 原有表信息,条件是新表里有的原有表信息的 update 原表 set 要更新的字段=x新表里的字段 from 原表 inner join 新表 on 关键字条件 第二个是把新表里有原表里没有的信息插入 insert into 原表 select * from 新表 where 关键字 not in (s...

如何用sql语句修改表中字段值,值要取自另一张表
那你就是要把凡是表1和表2相同的改了吧?如果卡号无重复 这么写 update 表1 t1 set t1.余额=(select t2.余额 from 表2 t2 where t2.卡号=t1.卡号)财富是浮云,帮到你才是真的

SQL 中更新一个表的数据是从另外的表查询出来的。怎么处理
update 表一 set 字段一=表二.姓名 where 表二.姓名 ='王'这些是针对你的问题而产生的结果!我也是初学者!看到你的sql语句,顺便提醒下:如果想加条件用where,但是如果想加多个条件不能一个where一个条件 如果你要添加或的关系用or就可以了,如果要添加和的关系,那么用and就可以了!or和and是...

SQL语句update多列满足判断条件后才赋值到另一个表不会写,求助!
大概看出你的意思应该是要把对应商品的最新单价更新到另一个表去。也就是不管前面那些字段是否有相同,都是取最新的那个。那么我们可以通过分组排序取第一条的思路去更新。分组条件就是你的对应条件,排序字段是分组字段加billdate、invoiceid、itemno 代码如下: \/×排好序产生一个临时表,之后我们只...

oracle sql更新字段为另一张表的对应字段
首先你的语句有点问题,应该这样写:update table_1 t1 set t1.name=(select t2.name from table_2 where t1.id=t2.id)where exists (select 1 from table_2 where t1.id=t2.id) and t1.idcard ='1111';之前子查询中的 t1.idcard ='1111' 是多余的。exists子句中的 t1.idcard =...

oracle触发器,update一张表时,将update的那一行数据中的部分值更新到...
1、首先创建测试的原表A。2、插入原表A测试数据,执行完SQL后,记得点击commit按钮,否则,数据不会持久化到数据库。3、【创建表结构与数据】此处不需要commit动作。4、【同字段仅数据】。5、【不同字段仅数据】,执行完SQL后,记得点击commit按钮,否则,数据不会持久化到数据库。6、最后效果如下图...

更新一个表要用到另外一个表的字段,要怎么写sql
有两个表A和B,均有key和value两个字段,如果B的key在A中也有,就把B的value换为A中对应的value update b set b.value=(select a.value from a where a.key=b.key) where b.id in(select b.id from b,a where b.key=a.key);但是如果没有ID字段:update b set b.value=(select a...

相似回答