我正在尝试使用WITH子句在Oracle中使用合并,但由于某种原因我无法使其工作.我确信这是显而易见的,但我还没有看到它.
-- behold,the wonders of fake data WITH X AS ( SELECT 'moo' AS COW,'woof' AS CAT,(SELECT MAX( DECIBELS ) FROM ANIMALIA WHERE COW = 'moo' ) AS DECIBELS FROM DUAL ) MERGE INTO ANIMALIA D USING X WHEN MATCHED THEN UPDATE SET D.COW = X.COW;
编辑
我实际上发现了如何处理这个问题(在我提交问题之前),但我认为,因为我花了很长时间才找到答案,希望将这个问题留下来意味着下一个人会发现它不是那么很多时间.
我将在一天左右的时间内发布答案,但如果其他人在同一时间发布,他们将获得积分.
您不能在SELECT语句中的任何位置使用WITH子句.
See the documentation here.:
You can specify this clause in any top-level SELECT statement and in
most types of subqueries.
所以,你可以做这样的事情(11g测试):
MERGE INTO animalia d USING (WITH X AS (SELECT 'moo' AS COW,(SELECT MAX( DECIBELS ) FROM ANIMALIA WHERE COW = 'moo' ) AS DECIBELS FROM DUAL ) SELECT * FROM X) q ON (1 = 1) WHEN MATCHED THEN UPDATE SET d.cow = q.cow||' and more';
原文地址:https://www.jb51.cc/oracle/204991.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。