【问题标题】:Error on Update Join更新加入时出错
【发布时间】:2016-02-12 16:47:28
【问题描述】:

我收到了这个错误

这是我当前的错误:ORA-00971:缺少 SET 关键字

UPDATE FGMULTI (JOIN arinvt ar 
 ON  fgmulti.arinvt_id = ar.id)

 SET NON_CONFORM_ALLOCATABLE = 'Y'

 WHERE IN_Date = CurrentDate 
  AND ar.Class LIKE 'CP%' 
  (OR ar.Class LIKE 'FG%' 
  OR ar.Class LIKE 'IN%' 
  OR ar.Class LIKE 'LA%' 
  OR ar.Class LIKE 'PK%')

【问题讨论】:

  • 您需要发布您的代码,否则我们无法帮助您。
  • 下次提供你的代码我已经发布了答案..
  • 另外,下次您发布代码时 - 不要在图片中发布。实际上在这里复制/粘贴查询或代码。

标签: sql oracle sql-update


【解决方案1】:

使用更新来选择加入

 UPDATE (select NON_CONFORM_ALLOCTABLE
         from FGMULTI 
          JOIN arinvt ar 
          ON  fgmulti.arinvt_id = ar.id 
         WHERE IN_Date = CurrentDate 
         AND ar.Class LIKE 'CP%' 
         OR ar.Class LIKE 'FG%' 
         OR ar.Class LIKE 'IN%' 
         OR ar.Class LIKE 'LA%' 
         OR ar.Class LIKE 'PK%') t
 SET t.NON_CONFORM_ALLOCATABLE = 'Y' 

【讨论】:

  • 我看了你的评论代码,你有其他错误(在错误的地方)我已经更新了 asnwer,如果这是正确的,请将其标记为已接受..
  • 我没有看到 LEFT OUTER 加入 ...然后 LEFT OUTER JOIN 不起作用,但只需加入是 .. 我已经更新了答案
  • 请..如果我提供的答案产生错误或错误结果显示错误或错误结果..不使用新的 sql 命令评论无法理解您在做什么。 .没有适当的解释
  • 就是这样!谢谢!
【解决方案2】:

您不能在 Oracle 中的 UPDATE 语句中使用 JOIN。你可以使用 exists 子句来做到这一点:

UPDATE FGMULTI
   SET NON_CONFORM_ALLOCATABLE = 'Y'
 WHERE IN_Date = CurrentDate 
  AND exists (SELECT 1 
              FROM arinvt ar 
              WHERE fgmulti.arinvt_id = ar.id
               AND (ar.Class LIKE 'CP%' 
                 OR ar.Class LIKE 'FG%' 
                 OR ar.Class LIKE 'IN%' 
                 OR ar.Class LIKE 'LA%' 
                 OR ar.Class LIKE 'PK%'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2016-08-27
    • 2014-07-08
    相关资源
    最近更新 更多