gpt4 book ai didi

带有内部联接的 Oracle Update 语句

转载 作者:行者123 更新时间:2023-12-04 18:13:47 25 4
gpt4 key购买 nike

我正在尝试使用内部联接编写一个简单的更新语句,但是我在 SQL Server 中执行此操作的方式似乎不适用于 ORACLE。这是更新:

UPDATE D
SET D.USER_ID = C.USER_ID
FROM D INNER JOIN C
ON D.MGR_CD = C.MGR_CD WHERE D.USER_ID IS NULL;

我得到的错误似乎是在 FROM 上.有人可以解释一下这是什么原因以及如何解决它吗?

最佳答案

在 Oracle 中,您不能使用 from update statement 中的条款那样。以下任何一项都应该有效。

UPDATE d
SET d.user_id =
(SELECT c.user_id
FROM c
WHERE d.mgr_cd = c.mgr_cd)
WHERE d.user_id IS NULL;

UPDATE (SELECT d.user_id AS d_user_id, c.user_id AS c_user_id
FROM d INNER JOIN c ON d.mgr_cd = c.mgr_cd
WHERE d.user_id IS NULL)
SET d_user_id = c_user_id;

UPDATE (SELECT d.user_id AS d_user_id, c.user_id AS c_user_id
FROM d INNER JOIN c ON d.mgr_cd = c.mgr_cd)
SET d_user_id = c_user_id
WHERE d_user_id IS NULL;

但是,我更喜欢使用 MERGE在这种情况下:
MERGE INTO d
USING c
ON (d.mgr_cd = c.mgr_cd)
WHEN MATCHED THEN
UPDATE SET d.user_id = c.user_id
WHERE d.user_id IS NULL;

关于带有内部联接的 Oracle Update 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com