我正在尝试仅在匹配条件下更新列。
state
它说sql命令未正确结束。
答案 0 :(得分:0)
下面是一个示例,该示例显示了如何做(至少,根据您发布的问题和评论,这就是我的理解)。
首先测试用例:
SQL> create table table1 (id number, criteria varchar2(10));
Table created.
SQL> create table table2 (id number);
Table created.
SQL> insert into table1 (id)
2 select 1 from dual union all
3 select 2 from dual;
2 rows created.
SQL> insert into table2 (id)
2 select 1 from dual;
1 row created.
如您所见,两个表共享ID = 1
,因此我们希望它的table1.criteria
被修改。
您的查询:
SQL> update table1 set
2 criteria = 'M1'
3 where id in (select a.id
4 from table1 a join table2 b on a.id = b.id
5 );
1 row updated.
SQL> -- Result
SQL> select * From table1;
ID CRITERIA
---------- ----------
1 M1
2
或者:
SQL> update table1 a set
2 a.criteria = 'M2'
3 where exists (select null
4 from table2 b
5 where b.id = a.id
6 );
1 row updated.
SQL> select * From table1;
ID CRITERIA
---------- ----------
1 M2
2
看看是否有帮助。