SQL JOIN 和 UPDATE

Mel*_*ada -2 sql oracle

我有两个表 TBL_TEST1 和 TBL_TEST2,两个表中都有列 DISTRICT 和 NAME,两个表中的 DISTRICT 列中的数据相同,我想将 TBL_TEST2 所有 NAME 列值更新为“完成”,其中 TBL_TEST2 表中的 DISTRICT 值'两个表中均找到 1'。

下面是我的查询表

SELECT * FROM TBL_TEST1

DISTRICT    NAME
1           Rashid
2           Ramish
1           Ali
1           Karim
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM TBL_TEST2

DISTRICT    NAME
1           DDD
2           DDDY
3           DDDD7
1           DD1
1           DDD4
Run Code Online (Sandbox Code Playgroud)

当我尝试时

  UPDATE TBL_TEST2 SET TBL_TEST2.NAME = 'DONE'  FROM TBL_TEST2 INNER JOIN TBL_TEST1 ON TBL_TEST2.DISTRICT = TBL_TEST1.DISTRICT WHERE TBL_TEST2.DISTRICT = '1'
Run Code Online (Sandbox Code Playgroud)

我收到下面的错误消息

ORA-00933: SQL command not properly ended
Run Code Online (Sandbox Code Playgroud)

我测试了其他帖子中的代码,我问,但是我的代码是正确的,为什么我仍然收到该错误消息

sca*_*dge 6

您的连接错误(您在 UPDATE 中使用 FROM) 此 JOIN 语法不适用于 ORACLE

UPDATE TBL_TEST2 
SET TBL_TEST2.NAME = 'DONE'  
FROM TBL_TEST2 
INNER JOIN TBL_TEST1 ON TBL_TEST2.DISTRICT = TBL_TEST1.DISTRICT 
WHERE TBL_TEST2.DISTRICT = '1';
Run Code Online (Sandbox Code Playgroud)

在ORACLE中更新连接表的一个简单方法是基于使用连接选择作为表

  UPDATE ( 
  SELECT TBL_TEST2.NAME AS OLD_VALUE
  FROM TBL_TEST2 
  INNER JOIN TBL_TEST1 ON TBL_TEST2.DISTRICT = TBL_TEST1.DISTRICT 
  WHERE TBL_TEST2.DISTRICT = '1' ) T
  SET T.OLD_VALUE = 'DONE'  ;
Run Code Online (Sandbox Code Playgroud)