我正在尝试通过以下代码进行更新:
MERGE
INTO target trg
USING (
WITH email AS (
SELECT trim(t2.crn_0) as cf,
coalesce(trim(t1.WEB_1),trim(t1.WEB_0)) as im
FROM tab1 t1
INNER JOIN tab2 t2 on t2.bprnum_0=t1.bpanum_0
INNER JOIN target t3 on t3.ycodfis_0=t2.crn_0
WHERE t1.bpaadd_0='000'
AND regexp_like(t3.ycodfis_0,'[^A-Za-z]')
AND t3.ycodfis_0 != ' '
AND coalesce(trim(t1.WEB_1),trim(t1.WEB_0)) != ' '
)
SELECT email.cf, email.im FROM email
) ON (email.cf = trg.ycodfis_0)
WHEN MATCHED THEN UPDATE SET trg.email_0 = email.im
我收到以下错误:
“ EMAIL”。“ CF”:无效的标识符
我尝试运行WITH语句的唯一查询,它正确运行。
我几次查看了合并语法,无法找到我的错误。
请问有人可以帮助我吗?
答案 0 :(得分:2)
您的email
仅在using
块内使用。从外部语句中将其删除:
ON (cf = trg.ycodfis_0)
WHEN MATCHED THEN UPDATE SET trg.email_0 = im
答案 1 :(得分:0)
始终使用别名-例如src
:
MERGE
INTO target trg
USING (
... subquery omitted for clarity ...
) src
ON ( src.cf = trg.ycodfis_0 )
WHEN MATCHED THEN UPDATE SET trg.email_0 = src.im