我有2个表 - 表A包含当前系统的数据,表B包含遗留数据。如果匹配,我试图通过附加表B中的连接数据来更新表A中的字段。
但是,由于数据的性质,没有单一的ID字段,匹配标准是姓名,出生日期和婚前姓名字段。
我认为以下内容可能会有效,但我遇到了“SQL错误:ORA-00933:SQL命令未正确结束”。
UPDATE A
SET A.HISTORY = A.HISTORY ||'Org:= ' || B.ORG ||' | Group:= ' || B.GROUP || ' | Campus:= ' || B.CAMPUS || ' | Year:= ' || B.YEAR || ' | Comments:= ' || B.COMMENT
FROM CURRENT_DATA A, LEGACY_DATA B
WHERE A.DOB = B.BDOB
AND A.FIRST_NAME = B.FIRST_AA
AND A.MIDDLE_NAME = B.MID_AB
AND A.LAST_NAME = B.LAST_AC
AND A.MAIDEN_NAME = B.MAIDEN_AD;
有人能指出我正确的方向吗:上面的查询?
答案 0 :(得分:0)
你基本上就在那里。您需要在此处使用子查询语法。请注意,这里可以有两个WHERE
语句,首先在子查询中,它将定义子查询输出的内容,另一个用于UPDATE
语句本身,它确定哪些行得到更新。下面的查询将更新表A
中的所有行。此外,子查询应该只为A
中的每一行返回一个结果。
UPDATE A
SET A.HISTORY = (SELECT
A.HISTORY ||'Org:= ' || B.ORG ||' | Group:= ' || B.GROUP || ' | Campus:= ' || B.CAMPUS || ' | Year:= ' || B.YEAR || ' | Comments:= ' || B.COMMENT
FROM CURRENT_DATA A, LEGACY_DATA B
WHERE A.DOB = B.BDOB
AND A.FIRST_NAME = B.FIRST_AA
AND A.MIDDLE_NAME = B.MID_AB
AND A.LAST_NAME = B.LAST_AC
AND A.MAIDEN_NAME = B.MAIDEN_AD
)
--WHERE condition for which rows to updated, if needed
;