dee*_*dee 1 sql oracle subquery
我正在浏览AskTom网站,发现什么应该是一个非常强大的更新状态工具,但我的声明拒绝接受子查询后的别名.有人可以帮我解释一下,并可能显示一个解决方案吗?
Update (SELECT T.Date_,T.Name_
FROM TableA T, TableB P
WHERE P.Date_ = T.Date_
AND P.Name_ = T.Name_) SET P.ID = T.Name_
Run Code Online (Sandbox Code Playgroud)
关于如何运行此类更新可能存在其他问题,这将是一个奖励.在尝试理解别名问题时,我对此更感兴趣.我试图分入
TableB.ID = TableA.Name_
Run Code Online (Sandbox Code Playgroud)
但没有运气
具体来说错误是ORA-00904无效的标识符.
一如既往地提前感谢.
上面的问题已经回答了我,但我确实有其他一些,因为我试图理解它.
我现在得到ORA-01779无法修改映射到非密钥保留表的列.我认为这是指我正在尝试更新正确的表格?因为我可以从视图或任何其他可能没有pk或fk的适当来源更新.
这种类型的更新语句可以与Oracle临时表一起使用,还是我可以预料到问题?
我可以将这种类型的语句与case语句一起使用来更新TableA中的多个列,还是会出现问题?
再次感谢.
执行UPDATE (query)操作时,可以在括号外使用的唯一列是查询返回的列的名称 - 在本例中为Date_和Name_.您在查询中使用的表别名在括号外也无效.
你需要的是:
Update (SELECT P.ID ,T.Name_
FROM TableA T, TableB P
WHERE P.Date_ = T.Date_
AND P.Name_ = T.Name_) SET ID = Name_
Run Code Online (Sandbox Code Playgroud)