Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于其他表中的行的PLSQL更新_Sql_Oracle_Plsql_Oracle Apex - Fatal编程技术网

基于其他表中的行的PLSQL更新

基于其他表中的行的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

我在顶点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 FK
equal
x

例如:
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中,我必须在使用按钮提交后更新表。我创建了这样的示例来澄清问题