使用子查询进行Oracle更新

格列布

我需要将updateMS SQL Server查询转换为Oracle

我有两个表:

Table1(id int, SaveId int, ChangeId int)
Table2(id int, smSaved int, boldId int)

查询是:

UPDATE
  Table1
Set 
  SaveId=tbl.smSaved
FROM
  Table1 tbl1
join Table2 tbl on tbl1.ChangeId=tbl.boldId

在MsSql中,一切正常,但是当我尝试在Oracle中运行时,那是行不通的。我不知道这是怎么回事。

有人可以向我解释我需要更改的内容吗?

乔·塔拉斯

尝试这个:

UPDATE table1 SET SaveId = 
    (SELECT tbl.saved FROM table2 tbl
    WHERE tbl.boldId = table1.ChangeId)
WHERE EXISTS(
    SELECT tbl.saved FROM table2 tbl
    WHERE tbl.boldId = table1.ChangeId
)

查询的第一部分使用tbl.saved的值更新SaveId(我想您只有table2的一行与table1链接。

第二部分(存在)保证两个表之间具有对应关系(如果添加存在,则将NULL放在table2中不存在的行中)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章