【问题标题】:SQL Command not properly ended in update statement [duplicate]SQL 命令未在更新语句中正确结束 [重复]
【发布时间】:2014-09-27 12:37:57
【问题描述】:

有 2 个表,INVN_SBSINVC_ITEM
希望根据 if INVN_SBS.ITEM_SIDINVNSBS.ITEM 匹配和 INVN_SBS.DCS_CODE = 'SMP' 的条件将表中的一个字段设置为 active = '0'

到目前为止我有:

UPDATE INVN_SBS 
SET ACTIVE='0' 
FROM 
   INVN_SBS,
   INVC_ITEM 
WHERE 
       INVN_SBS.ITEM_SID = INVC_ITEM.ITEM_SID
   and INVN_SBS.DCS_CODE='SMP'

但是运行时我得到:

ORA-00933:SQL 命令未正确结束。

我能够运行一个选择语句来向我显示符合我的条件的项目,但更新给我带来了麻烦。

【问题讨论】:

  • Oracle 不支持update 中的from 子句。使用merge 或相关子查询。

标签: sql oracle


【解决方案1】:

这是一种可能的解决方案:

UPDATE INVN_SBS 
SET ACTIVE='0' 
where
  DCS_CODE='SMP' and
  ITEM_SID in (
    select ITEM_SID
    from INVC_ITEM
  )

如果您的主键支持它,这也应该有效:

UPDATE (
  select INVN_SBS.ACTIVE
  FROM 
    INVN_SBS,
    INVC_ITEM 
  WHERE 
    INVN_SBS.ITEM_SID = INVC_ITEM.ITEM_SID
    and INVN_SBS.DCS_CODE='SMP'
)
SET ACTIVE='0' 

如果您的主键不支持第二种方法,它会在编译时通知您。

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多