【问题标题】:Sql Server equivalent Join update Oracle [duplicate]Sql Server等效加入更新Oracle [重复]
【发布时间】:2017-07-06 22:20:10
【问题描述】:

我的更新查询Sql Server如下:

Update Project set Name=Project.Name+' assignedTo '
FROM Project 
INNER JOIN EmployeeProject ON Project.ID = EmployeeProject.ProjectID 
INNER JOIN Employee ON EmployeeProject.EmployeeID = Employee.ID
WHERE (Employee.Name = N'Minion')

什么是等效的Oracle查询。我的尝试如下:

Update (SELECT Project.Name as ProjectName,Employee.Name as EmpName
        FROM Project 
        INNER JOIN EmployeeProject ON Project.ID = EmployeeProject.ProjectID 
        INNER JOIN Employee ON EmployeeProject.EmployeeID = Employee.ID  
        where Employee.Name=N'Minion' 
       ) T 
set T.ProjectName=' somting'

但给我错误无法修改映射到非键保留表的列。Sql 服务器工作正常。

【问题讨论】:

  • @a_horse_with_no_name 你能不能发布一个答案

标签: sql oracle


【解决方案1】:

你只需要exists:

update Project p
    set Name = p.Name+' assignedTo '
where exists (select 1
              from EmployeeProject join 
                   Employee e
                   on ep.EmployeeID = e.ID
              where e.Name = N'Minion' and p.ID = ep.ProjectID 
             );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 2011-05-01
    • 2013-10-07
    • 2014-07-07
    • 2020-09-24
    • 2014-05-30
    • 2015-07-09
    相关资源
    最近更新 更多