MERGE INTO 在11g中的疑问。谢谢

michaelsheyong 2012-05-09 01:07:06
MERGE INTO T1 a
USING (SELECT * FROM T2) b
ON (a.ID = b.PARENTID)
WHEN MATCHED THEN
UPDATE SET A.SEX = 'X'
WHEN NOT MATCHED THEN
INSERT
( a.NAME, a.SEX)
VALUES
( '3', (SELECT t3.ID FROM t3 WHERE t3.ID = a.id))
说明:这三个表只是我随便建立,为了演示这个错误,此语句在10g中能正常运行,但是在11g会报错
ora-00904:"A"."ID"标识符无效,怎么解决,谢谢
...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
michaelsheyong 2012-05-15
  • 打赏
  • 举报
回复
thank you.
semisweet 2012-05-13
  • 打赏
  • 举报
回复
mergeinto的语法可以理解为一个单行update语句+一个单行insert语句,需要更新的内容都从using中来,以on后的条件做关联
试着改成
MERGE INTO T1 a
USING (SELECT t2.parentid,t3.id FROM T2,t3
where t2.parentid=t3.id) b
ON (a.ID = b.PARENTID)
WHEN MATCHED THEN
UPDATE SET A.SEX = 'X'
WHEN NOT MATCHED THEN
INSERT
( a.NAME, a.SEX)
VALUES
( '3', b.id)
michaelsheyong 2012-05-11
  • 打赏
  • 举报
回复
放using?我这要通过这个语句得到一个值呢? 自己顶顶
semisweet 2012-05-09
  • 打赏
  • 举报
回复
(SELECT t3.ID FROM t3 WHERE t3.ID = a.id)条件放到using中

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧