ini*_*iki 2 sql oracle sql-update sql-insert
我有一个名为 TextData 的现有表,其中包含 TextId 和 Text 字段。在下面的语句中,我尝试使用 - 将一些记录合并(插入/更新)到该表中
MERGE INTO maestro.TEXTDATA T
USING (
select N'/Common/UserStatusExpired', N'Expired' from dual
union all select N'/Common/UserStatusPwdExpired', N'Pwd Expired' from dual
) AS Source (Id, Txt) ON (T.TEXTID = Source.Id)
WHEN MATCHED THEN
UPDATE SET TEXT = Source.Txt
WHEN NOT MATCHED THEN
INSERT (TEXTID, TEXT) VALUES(Source.Id, Source.Txt);
Run Code Online (Sandbox Code Playgroud)
但是,收到此错误 -
missing ON keyword
Run Code Online (Sandbox Code Playgroud)
谁能建议我在合并声明中缺少什么。
谢谢你!
那将是:
MERGE INTO textdata t
USING (
SELECT N'/Common/UserStatusExpired' AS textid, N'Expired' AS text FROM DUAL
UNION ALL SELECT N'/Common/UserStatusPwdExpired', N'Pwd Expired' FROM DUAL
) s ON (t.textid = s.textid )
WHEN MATCHED THEN
UPDATE SET text = s.text
WHEN NOT MATCHED THEN
INSERT (textid, text) VALUES(s.textid, s.text);
Run Code Online (Sandbox Code Playgroud)
理由:
Oracle 不支持AS定义表别名 - 您需要删除该关键字
列名必须在子查询中定义
我还对齐了源表和目标表之间的列名称,以便查询更容易遵循。
| 归档时间: |
|
| 查看次数: |
9459 次 |
| 最近记录: |