【发布时间】:2016-10-25 14:02:19
【问题描述】:
一些背景知识 - 我有一个导出的 CSV 数据集,它将被导入/迁移到新系统中。我在这个数据集中没有识别 ID,因为在新系统中不需要它,但我现在需要在这个 CSV 中添加一些额外的数据。
我已将 CSV 导入 Oracle 表并创建了 2 个新列 - FieldLabelEDRN 和 ELEMENTID。我想用原始表中的相关数据更新这 2 列,所以我尝试了以下操作
UPDATE EDRN_NEW.DATADIC
SET FIELDLABELEDRN =
(SELECT short_name
FROM edrn.md$$_all_data_elements
WHERE active_yn = 'YES'
ORDER BY short_name
),
SET ELEMENTID =
(SELECT element_id
FROM edrn.md$$_all_data_elements
WHERE active_yn = 'YES'
ORDER BY short_name
)
这会产生 ora-00907 错误,我知道这是非常基本的。我正在努力想一种方法来获得我需要的价值。我还尝试在 short_name = 字段标签上将 2 个表连接在一起,以仅拉入 element_id,因为这是我真正需要的,但我不太熟悉不能在 Oracle 的 UPDATE 中使用 JOIN
任何意见/建议将不胜感激
【问题讨论】:
-
您需要一些方法将新值与它们进入的行进行匹配。
-
除了@GordonLinoff 注释,你的语法不正确,
SET应该只用一次。 -
不相关,但是,您可以通过仅使用单个子选择
set (FIELDLABELEDRN, ELEMENTID) = (select short_name, element_id from ...)来提高性能 - 但是子选择中的order by是无用的 -
抱歉,我现在意识到我的语法不正确。我会试试子选择集,谢谢。