一尘不染

与某些表连接时,更新查询出现语法错误

sql

这是API生成的查询-不确定出什么问题了。

UPDATE T123 
SET COL1 = 1, VER1 = VER1 + 1  
INNER JOIN  
    SELECT C1 
    FROM (SELECT T.NUM_FLD C1 FROM WAPTDT_123 T) TAB ON C1 = REQUEST_ID

给我错误

SQL命令未正确结束

表中存在所有列,我相信联接和在oracle上运行此命令有问题。

编辑

还有一件事是,

SELECT C1 
FROM (SELECT T.NUM_FLD C1 FROM WAPTDT_123 T) TAB

当我从某些API获取时,查询的一部分已修复。


阅读 134

收藏
2021-05-05

共1个答案

一尘不染

Oracle不支持join以下update语法:

UPDATE T123
    SET COL1 = 1,
        VER1 = VER1 + 1
    WHERE EXISTS (SELECT 1 FROM WAPTDT_123 T WHERE T123.REQUEST_ID = T.NUM_FLD);

这是标准的SQL,可以在任何数据库中使用。

您的查询还有其他问题。。。子查询不在括号中,inner join没有第一张表。

编辑:

您可以使用该子查询编写此查询:

UPDATE T123
    SET COL1 = 1,
        VER1 = VER1 + 1
    WHERE T123.REQUEST_ID IN (SELECT C1 FROM ( SELECT T.NUM_FLD C1 FROM WAPTDT_123 T) TAB );

我将其切换为IN,只是因为这是另一种选择。您仍然可以使用EXISTS

2021-05-05