SQL命令未在update语句中正确结束

时间:2014-08-04 22:58:06

标签: sql oracle

有2个表格,INVN_SBSINVC_ITEM 希望根据if active = '0'INVN_SBS.ITEM_SID匹配以及INVNSBS.ITEM

的条件,将表格中的一个字段设置为INVN_SBS.DCS_CODE = 'SMP'

到目前为止,我有:

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命令未正确结束。

我能够运行一个select语句来显示符合我标准的项目,但更新会给您带来麻烦。

1 个答案:

答案 0 :(得分: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' 

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