在Oracle中使用联接更新

mwyxok5s  于 2022-11-22  发布在  Oracle
关注(0)|答案(1)|浏览(147)

我在SQL中执行了以下迁移请求:

UPDATE table1
SET table1.value = table2.value
FROM table1
INNER JOIN table2
ON table2.othervalue2 = table1.key
WHERE table2.othervalue3 is NULL

很好用。但不能用Oracle。我知道用Oracle在更新中做join不是不可能的,所以我用这个:

UPDATE table1 SET table1.value = (SELECT table2.value
                                  FROM table2
                                  WHERE table2.othervalue2 = table1.key
                                  AND table2.othervalue3 is NULL)
WHERE EXISTS (SELECT table2.value
                                  FROM table2
                                  WHERE table2.othervalue2 = table1.key
                                  AND table2.othervalue3 is NULL)

但我有一个ORA-01427:子查询返回多行。
谢谢

yptwkmov

yptwkmov1#

我 会 说 你 有 不 一致 的 数据 。 从 你 得到 的 错误 我 会 说 你 在 指定 的 查询 中 有 重复 。

SELECT table2.value
  FROM table2
  WHERE table2.othervalue2 = table1.key
    AND table2.othervalue3 is NULL

中 的 每 一 个
您 可能 需要 检查 它 。 或者 您 需要 更 好 地 指定 您 要 选择 进行 更新/合并 的 数据 。

相关问题