我有两个表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
答案 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' ;