带有UPDATE的SQL JOIN

时间:2016-11-21 07:22:08

标签: sql oracle

我有两个表TBL_TEST1和TBL_TEST2,两个表中都有DISTRICT和NAME列,在DISTRICT列中的两个表中都有相同的数据我想将TBL_TEST2的所有NAME列值更新为'Done',其中TBL_TEST2表在其中两个表中都有DISTRICT值'1'。

下面的

是我的查询表

SELECT * FROM TBL_TEST1

DISTRICT    NAME
1           Rashid
2           Ramish
1           Ali
1           Karim

SELECT * FROM TBL_TEST2

DISTRICT    NAME
1           DDD
2           DDDY
3           DDDD7
1           DD1
1           DDD4

当我尝试

  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'

我收到错误信息

ORA-00933: SQL command not properly ended

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

1 个答案:

答案 0 :(得分:3)

您的加入错误(您在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';

在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'  ;