我现在要更新update操作,涉及到A,B
两个表
大概意思是这样的,
只更新一个表A,但是是要从关联的A,B的结果集当中来获取相关条件,以及相关值。
加入A表有1,2,3,4四个字段
B表有1,2,3,4四个字段下面这个语句有问题。但是大概是这个意思
这是通过关联查处的结果集
select a.1,a.2,b.3,b.4 from A a,B b where a.1=b.1,a.3=b.2
然后还有一步就是通过上面查出来的结果集。更新A表 假设 查出来的结果集为C
update A a set a.1=C.a.1 ,a.2=C.a.2 where a.3=C.b.3 and a.4=C.b.4请问用一个语句怎么来实现。
两个表
大概意思是这样的,
只更新一个表A,但是是要从关联的A,B的结果集当中来获取相关条件,以及相关值。
加入A表有1,2,3,4四个字段
B表有1,2,3,4四个字段下面这个语句有问题。但是大概是这个意思
这是通过关联查处的结果集
select a.1,a.2,b.3,b.4 from A a,B b where a.1=b.1,a.3=b.2
然后还有一步就是通过上面查出来的结果集。更新A表 假设 查出来的结果集为C
update A a set a.1=C.a.1 ,a.2=C.a.2 where a.3=C.b.3 and a.4=C.b.4请问用一个语句怎么来实现。
set (a.1, a.2) = (select b.1, b.2 from b where A.*** = B.***)
where .....语法格式如上,自行调整把
UPDATE A
SET (A.3, A.4) = (SELECT B.3, B.4
FROM B
WHERE A.1=B.1 AND A.2=B.2)
WHERE EXISTS (SELECT 1
FROM B
WHERE A.1=B.1 AND A.2=B.2)
update A
set col1=btable.col1,col2=btable.col2
from B btable
where col3=btable.col3 and col4=btable.col4;
通用的做法:
update A
set (A表中你要更新的字段) = (select B表中你要更新的字段 from b where 需要的条件)
where 需要更新A表的条件
提示相应错误 command not properly ended
to haiye and sulins
错误信息 提示 singel-row subquery returns more than one row
因为中间查出来的是一个记录集。
set (a.1, a.2) = (select b.1, b.2 from b where A.*** = B.***)
where ..... 确定(select b.1, b.2 from b where A.*** = B.***) 里面的条件控制为能返回唯一的一条记录
如果返回多条不同的记录,那就是你这个需求有问题了,需要重新整理需求或者重新设计表结构了。