update语句中的内连接查询给出错误

时间:2014-10-09 12:52:59

标签: sql oracle sql-update

我有这个UPDATE查询:

UPDATE secugconductorinfo
       INNER JOIN tblsecugconductor
               ON secugconductorinfo.CONDUCTORGUID = tblsecugconductor.globalid
SET    secugconductorinfo.conductorcount = '0'
WHERE  Upper(tblsecugconductor.FILE_NAME) LIKE '%Q1222_S%'
       AND secugconductorinfo.conductorsize = 'Unknown'
       AND secugconductorinfo.insulation = 'Unknown'
       AND secugconductorinfo.material = 'Unknown'
       AND secugconductorinfo.conductorcount = '1' 

我想基于与tblsecugconductor的连接更新所有secugconductorinfo行的conductorcount=0
但我得到了:

  

错误报告:   SQL错误:ORA-00971:缺少SET关键字00971. 00000 - “缺少SET关键字”

如何更改查询以执行此更新?

2 个答案:

答案 0 :(得分:0)

UPDATE secugconductorinfo
SET    secugconductorinfo.conductorcount = '0'
WHERE  secugconductorinfo.conductorsize = 'Unknown'
       AND secugconductorinfo.insulation = 'Unknown'
       AND secugconductorinfo.material = 'Unknown'
       AND secugconductorinfo.conductorcount = '1' 
AND exists (select 1
            from tblsecugconductor
            where secugconductorinfo.CONDUCTORGUID = tblsecugconductor.globalid
              and Upper(tblsecugconductor.FILE_NAME) LIKE '%Q1222_S%')

您应该使用exists语句来进行连接。我更正了上面的代码。

答案 1 :(得分:-1)

试试这个:

UPDATE secugconductorinfo
SET conductorcount ='0'
from secugconductorinfo aa
INNER JOIN tblsecugconductor bb
       ON aa.CONDUCTORGUID = 
              bb.globalid

 WHERE  Upper(bb.FILE_NAME) 
                LIKE '%Q1222_S%'
  AND aa.conductorsize = 'Unknown'
  AND aa.insulation = 'Unknown'
  AND aa.material = 'Unknown'
  AND aa.conductorcount = '1'