基于其他表中的行的PLSQL更新
我在顶点A和B中有以下表格 A有以下列:基于其他表中的行的PLSQL更新,sql,oracle,plsql,oracle-apex,Sql,Oracle,Plsql,Oracle Apex,我在顶点A和B中有以下表格 A有以下列: ID_A; VALUE; ID_C_FK; ID_A_FK B列有: ID_A; VALUE; ID_C_FK; ID_A_FK 我想更新表A中ID\u A等于表B中所选行ID\u A\u FK的VALUE列,其中ID\u FKequalx 例如:A有行( 表B有行 ID_A value ------------ 1 1 2 1 3 0 4 0 5 0 ID_C_FK ID_A
ID_A;
VALUE;
ID_C_FK;
ID_A_FK
B列有:
ID_A;
VALUE;
ID_C_FK;
ID_A_FK
我想更新表A
中ID\u A
等于表B
中所选行ID\u A\u FK
的VALUE
列,其中ID\u FK
equalx
例如:A
有行(
表B
有行
ID_A value
------------
1 1
2 1
3 0
4 0
5 0
ID_C_FK ID_A_FK
------------------
8 4
9 4
9 5
我只想更新表A
中的VALUE
,这些行在从B中选择的行中具有ID\u A
,从B中选择行的条件是ID\u C\u FK
等于x=9
;因此,表A
应该最终具有行:
ID_A value
------------
1 1
2 1
3 0
4 1
5 1
如何在PL/SQL中编写这样的更新
感谢您考虑我的请求。我想这就是您想要的:
update a
set value = 1
where exists (select 1
from b
where b.id_a_fk = a.id_a and b.id_c_fk = 9
);
我想这就是你想要的:
update a
set value = 1
where exists (select 1
from b
where b.id_a_fk = a.id_a and b.id_c_fk = 9
);
为什么要在select后面加1?我不明白这是什么:b.id\u a\u fk=a.id\u a和b.id\u c\u fk=9这是一个相关的子查询。
1
只是一个任意值,如果存在匹配项,则返回某个值。where
上的条件是匹配两个表文本中的join
条件。b.id\u c\fk=9idd_c_fk=9的行,好吧,但如何理解这一点:在您所放置的代码上下文中,b.id_a_fk=a.id_a。其思想是在b.id_a_fk=9的行中更新由b.id_a_fk指示的行,因此外部部分-更新应该只在从具有id_c_fk的b行中选择id的行中设置值=9@user3376246…这就是为什么会有两个条件。id\u a
需要匹配id\u fk
,另一列的值需要是9
。为什么在选择后加1?我不明白这一点:b.id\u fk=a.id\u a和b.id\u c\u fk=9这是一个相关的子查询。1
只是一个任意值,如果存在匹配项,则返回某个值where
上的条件与文本中两个表的join
条件相匹配。b.id_c_fk=9选择idd_c_fk=9的行,好的,但如何理解这一点:b.id_a_fk=a.id_fk=a.id_fk在您放置的代码上下文中。其思想是更新a中由b.id_a_fk在b.id_fk=9的行中指示的行,因此外部部件-更新应仅在id为的b行中选择的id为的行中设置值=9@user3376246…这就是为什么有两个条件。id\u a
需要匹配id\u a\u fk
,而另一列的值需要是9
。你为什么认为需要存储过程?我不理解你的问题,你能用其他的话说吗?@horse无名:我在apex做项目,我必须在提交后用一个按钮更新表。我创建了这样的示例来澄清问题,为什么你认为你需要一个存储过程?我不明白你的问题,你能用其他的话说吗?@horse无名:我在做项目在apex中,我必须在使用按钮提交后更新表。我创建了这样的示例来澄清问题