【发布时间】:2018-10-04 10:24:50
【问题描述】:
我不经常使用 SQL UPDATE,而且对于如何重写此 SELECT 以进行更新,我有一个完整的大脑障碍。
基本上我想用KUST_ADR.KU_EMAIL的结果替换AUF_ADR.EMAIL。
SELECT AUF_KOPF.AUF_NR,
AUF_ADR.EMAIL,
KUST_ADR.KU_EMAIL
FROM AUF_ADR,
AUF_KOPF,
AUF_STAT,
KUST_ADR
WHERE AUF_ADR.AUF_NR = AUF_KOPF.AUF_NR
AND AUF_ADR.AUF_NR = AUF_STAT.AUF_NR
AND AUF_KOPF.KUNR = KUST_ADR.KU_NR
AND AUF_ADR.ADR_ART = 2
AND KUST_ADR.KU_ADR_ART = 1
AND AUF_ADR.EMAIL != KUST_ADR.KU_EMAIL
AND (SELECT SUM(AUF_STAT.RG_ANZ)
FROM AUF_STAT
WHERE AUF_STAT.AUF_NR = AUF_KOPF.AUF_NR) = 0;
我知道我需要从类似的东西开始
UPDATE AUF_ADR
SET AUF_ADR.EMAIL = KUST_ADR.KU_EMAIL
但这就是我不明白接下来会发生什么的地方,即我没有在UPDATE 中使用FROM,那么WHERE 呢?
【问题讨论】:
-
可以参考这个话题link
-
使用 ANSI
join语法而不是隐式的 a,b,c,d 进行连接。然后将您的查询转换为MERGE INTO语句。 -
请提供一些简化的 DDL 代码,包括约束,以便可以看到表是如何“连接”的。我写了一个例子——见dbfiddle.uk/…
标签: oracle join sql-update oracle10g